13b7203622 2011-02-23 kinaba: //--- K.I.LIB --- 13b7203622 2011-02-23 kinaba: // kl_reg.h : registry and ini-file operation 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: #include "stdafx.h" 13b7203622 2011-02-23 kinaba: #include "kilib.h" 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: //---------------------------- openŚn ----------------------------// 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: bool kiRegKey::open( HKEY parent, LPCTSTR keyname, REGSAM access ) 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: return (ERROR_SUCCESS == RegOpenKeyEx( parent, 13b7203622 2011-02-23 kinaba: keyname, 0, access, &m_hKey )); 13b7203622 2011-02-23 kinaba: } 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: bool kiRegKey::create( HKEY parent, LPCTSTR keyname, REGSAM access ) 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: DWORD x; 13b7203622 2011-02-23 kinaba: return (ERROR_SUCCESS == RegCreateKeyEx( parent, 13b7203622 2011-02-23 kinaba: keyname, 0, REG_NONE, REG_OPTION_NON_VOLATILE, access, NULL, &m_hKey, &x )); 13b7203622 2011-02-23 kinaba: } 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: //------------------------- query/setŚn ----------------------------// 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: bool kiRegKey::get( LPCTSTR valname, DWORD* val ) 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: DWORD x=4; 13b7203622 2011-02-23 kinaba: return (ERROR_SUCCESS == RegQueryValueEx( m_hKey, 13b7203622 2011-02-23 kinaba: valname, NULL, NULL, (BYTE*)val, &x )); 13b7203622 2011-02-23 kinaba: } 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: bool kiRegKey::get( LPCTSTR valname, BYTE* val, DWORD siz ) 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: return (ERROR_SUCCESS == RegQueryValueEx( m_hKey, 13b7203622 2011-02-23 kinaba: valname, NULL, NULL, val, &siz )); 13b7203622 2011-02-23 kinaba: } 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: bool kiRegKey::get( LPCTSTR valname, kiStr* val ) 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: static char dat[2048]; 13b7203622 2011-02-23 kinaba: DWORD x = 2048; 13b7203622 2011-02-23 kinaba: if( ERROR_SUCCESS == RegQueryValueEx( m_hKey, 13b7203622 2011-02-23 kinaba: valname, NULL, NULL, (BYTE*)dat, &x )) 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: *val = dat; 13b7203622 2011-02-23 kinaba: return true; 13b7203622 2011-02-23 kinaba: } 13b7203622 2011-02-23 kinaba: return false; 13b7203622 2011-02-23 kinaba: } 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: bool kiRegKey::set( LPCTSTR valname, DWORD val ) 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: return (ERROR_SUCCESS == RegSetValueEx( m_hKey, 13b7203622 2011-02-23 kinaba: valname, 0, REG_DWORD, (BYTE*)&val, 4 )); 13b7203622 2011-02-23 kinaba: } 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: bool kiRegKey::set( LPCTSTR valname, BYTE* val, DWORD siz ) 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: return (ERROR_SUCCESS == RegSetValueEx( m_hKey, 13b7203622 2011-02-23 kinaba: valname, 0, REG_BINARY, (BYTE*)val, siz )); 13b7203622 2011-02-23 kinaba: } 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: bool kiRegKey::set( LPCTSTR valname, LPCTSTR val ) 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: return (ERROR_SUCCESS == RegSetValueEx( m_hKey, 13b7203622 2011-02-23 kinaba: valname, 0, REG_SZ, (BYTE*)val, ki_strlen(val)+1 )); 13b7203622 2011-02-23 kinaba: } 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: //--------------------------- deleteŚn ----------------------------// 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: bool kiRegKey::del( LPCTSTR valname ) 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: return (ERROR_SUCCESS == RegDeleteValue( m_hKey, valname )); 13b7203622 2011-02-23 kinaba: } 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: bool kiRegKey::delSubKey( LPCTSTR keyname ) 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: if( app()->osver().dwPlatformId == VER_PLATFORM_WIN32_NT ) 13b7203622 2011-02-23 kinaba: return delSubKeyRecursive( m_hKey, keyname ); 13b7203622 2011-02-23 kinaba: else 13b7203622 2011-02-23 kinaba: return (ERROR_SUCCESS == RegDeleteKey( m_hKey, keyname )); 13b7203622 2011-02-23 kinaba: } 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: bool kiRegKey::delSubKeyRecursive( HKEY k, LPCTSTR n ) 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: HKEY k2; 13b7203622 2011-02-23 kinaba: if( ERROR_SUCCESS!=RegOpenKeyEx( k,n,0,KEY_READ,&k2 ) ) 13b7203622 2011-02-23 kinaba: return false; 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: bool ans = true; 13b7203622 2011-02-23 kinaba: static char buf[2048]; 13b7203622 2011-02-23 kinaba: DWORD bs = sizeof(buf); 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: for( int i=0; 13b7203622 2011-02-23 kinaba: ERROR_SUCCESS==RegEnumKeyEx( k2,i,buf,&bs,NULL,NULL,NULL,NULL ); 13b7203622 2011-02-23 kinaba: i++ ) 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: if( !delSubKeyRecursive( k2,buf ) ) 13b7203622 2011-02-23 kinaba: ans = false; 13b7203622 2011-02-23 kinaba: bs = sizeof(buf); 13b7203622 2011-02-23 kinaba: } 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: RegCloseKey( k2 ); 13b7203622 2011-02-23 kinaba: RegDeleteKey( k,n ); 13b7203622 2011-02-23 kinaba: return ans; 13b7203622 2011-02-23 kinaba: } 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: //--------------------------- ini:Ź‰Šú‰» ----------------------------// 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: void kiIniFile::setFileName( const char* ini, bool exepath ) 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: if( !exepath ) 13b7203622 2011-02-23 kinaba: m_FileName = ""; 13b7203622 2011-02-23 kinaba: else 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: m_FileName.beSpecialPath( kiPath::Exe ); 13b7203622 2011-02-23 kinaba: m_FileName.beBackSlash( true ); 13b7203622 2011-02-23 kinaba: } 13b7203622 2011-02-23 kinaba: m_FileName += ini; 13b7203622 2011-02-23 kinaba: } 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: //--------------------------- ini:readŚn ----------------------------// 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: int kiIniFile::getInt( const char* key, int defval ) 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: return ::GetPrivateProfileInt( m_CurSec, key, defval, m_FileName ); 13b7203622 2011-02-23 kinaba: } 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: bool kiIniFile::getBool( const char* key, bool defval ) 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: return (0 != ::GetPrivateProfileInt( m_CurSec, 13b7203622 2011-02-23 kinaba: key, defval?1:0, m_FileName ) ); 13b7203622 2011-02-23 kinaba: } 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: const char* kiIniFile::getStr( const char* key, const char* defval ) 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: ::GetPrivateProfileString( m_CurSec, key, defval, 13b7203622 2011-02-23 kinaba: m_StrBuf, sizeof(m_StrBuf), m_FileName ); 13b7203622 2011-02-23 kinaba: return m_StrBuf; 13b7203622 2011-02-23 kinaba: } 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: //--------------------------- ini:writeŚn ----------------------------// 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: bool kiIniFile::putStr( const char* key, const char* val ) 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: return (FALSE != ::WritePrivateProfileString( 13b7203622 2011-02-23 kinaba: m_CurSec, key, val, m_FileName ) ); 13b7203622 2011-02-23 kinaba: } 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: bool kiIniFile::putInt( const char* key, int val ) 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: ::wsprintf( m_StrBuf, "%d", val ); 13b7203622 2011-02-23 kinaba: return putStr( key, m_StrBuf ); 13b7203622 2011-02-23 kinaba: } 13b7203622 2011-02-23 kinaba: 13b7203622 2011-02-23 kinaba: bool kiIniFile::putBool( const char* key, bool val ) 13b7203622 2011-02-23 kinaba: { 13b7203622 2011-02-23 kinaba: return putStr( key, val ? "1" : "0" ); 13b7203622 2011-02-23 kinaba: }