File Annotation

Not logged in
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: }