File Annotation

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