Artifact Content

Not logged in

Artifact 7e2055bca5da9935cb3557ae3c74ec135b176d3a


     1  //--- K.I.LIB ---
     2  // kl_reg.h : registry and ini-file operation
     3  
     4  #include "stdafx.h"
     5  #include "kilib.h"
     6  
     7  
     8  //---------------------------- openŚn ----------------------------//
     9  
    10  
    11  bool kiRegKey::open( HKEY parent, LPCTSTR keyname, REGSAM access )
    12  {
    13  	return (ERROR_SUCCESS == RegOpenKeyEx( parent,
    14  		keyname, 0, access, &m_hKey ));
    15  }
    16  
    17  bool kiRegKey::create( HKEY parent, LPCTSTR keyname, REGSAM access )
    18  {
    19  	DWORD x;
    20  	return (ERROR_SUCCESS == RegCreateKeyEx( parent,
    21  		keyname, 0, REG_NONE, REG_OPTION_NON_VOLATILE, access, NULL, &m_hKey, &x ));
    22  }
    23  
    24  
    25  //------------------------- query/setŚn ----------------------------//
    26  
    27  
    28  bool kiRegKey::get( LPCTSTR valname, DWORD* val )
    29  {
    30  	DWORD x=4;
    31  	return (ERROR_SUCCESS == RegQueryValueEx( m_hKey,
    32  		valname, NULL, NULL, (BYTE*)val, &x ));
    33  }
    34  
    35  bool kiRegKey::get( LPCTSTR valname, BYTE* val, DWORD siz )
    36  {
    37  	return (ERROR_SUCCESS == RegQueryValueEx( m_hKey,
    38  		valname, NULL, NULL, val, &siz ));
    39  }
    40  
    41  bool kiRegKey::get( LPCTSTR valname, kiStr* val )
    42  {
    43  	static char dat[2048];
    44  	DWORD x = 2048;
    45  	if( ERROR_SUCCESS == RegQueryValueEx( m_hKey,
    46  		valname, NULL, NULL, (BYTE*)dat, &x ))
    47  	{
    48  		*val = dat;
    49  		return true;
    50  	}
    51  	return false;
    52  }
    53  
    54  bool kiRegKey::set( LPCTSTR valname, DWORD val )
    55  {
    56  	return (ERROR_SUCCESS == RegSetValueEx( m_hKey,
    57  		valname, 0, REG_DWORD, (BYTE*)&val, 4 ));
    58  }
    59  
    60  bool kiRegKey::set( LPCTSTR valname, BYTE* val, DWORD siz )
    61  {
    62  	return (ERROR_SUCCESS == RegSetValueEx( m_hKey,
    63  		valname, 0, REG_BINARY, (BYTE*)val, siz ));
    64  }
    65  
    66  bool kiRegKey::set( LPCTSTR valname, LPCTSTR val )
    67  {
    68  	return (ERROR_SUCCESS == RegSetValueEx( m_hKey,
    69  		valname, 0, REG_SZ,	(BYTE*)val, ki_strlen(val)+1 ));
    70  }
    71  
    72  
    73  //--------------------------- deleteŚn ----------------------------//
    74  
    75  
    76  bool kiRegKey::del( LPCTSTR valname )
    77  {
    78  	return (ERROR_SUCCESS == RegDeleteValue( m_hKey, valname ));
    79  }
    80  
    81  bool kiRegKey::delSubKey( LPCTSTR keyname )
    82  {
    83  	if( app()->osver().dwPlatformId == VER_PLATFORM_WIN32_NT )
    84  		return delSubKeyRecursive( m_hKey, keyname );
    85  	else
    86  		return (ERROR_SUCCESS == RegDeleteKey( m_hKey, keyname ));
    87  }
    88  
    89  bool kiRegKey::delSubKeyRecursive( HKEY k, LPCTSTR n )
    90  {
    91  	HKEY k2;
    92  	if( ERROR_SUCCESS!=RegOpenKeyEx( k,n,0,KEY_READ,&k2 ) )
    93  		return false;
    94  
    95  	bool ans = true;
    96  	static char buf[2048];
    97  	DWORD bs = sizeof(buf);
    98  
    99  	for( int i=0;
   100  		ERROR_SUCCESS==RegEnumKeyEx( k2,i,buf,&bs,NULL,NULL,NULL,NULL );
   101  		i++ )
   102  	{
   103  		if( !delSubKeyRecursive( k2,buf ) )
   104  			ans = false;
   105  		bs = sizeof(buf);
   106  	}
   107  	
   108  	RegCloseKey( k2 );
   109  	RegDeleteKey( k,n );
   110  	return ans;
   111  }
   112  
   113  //--------------------------- ini:Ź‰Šú‰» ----------------------------//
   114  
   115  
   116  void kiIniFile::setFileName( const char* ini, bool exepath )
   117  {
   118  	if( !exepath )
   119  		m_FileName = "";
   120  	else
   121  	{
   122  		m_FileName.beSpecialPath( kiPath::Exe );
   123  		m_FileName.beBackSlash( true );
   124  	}
   125  	m_FileName += ini;
   126  }
   127  
   128  
   129  //--------------------------- ini:readŚn ----------------------------//
   130  
   131  
   132  int kiIniFile::getInt( const char* key, int defval )
   133  {
   134  	return ::GetPrivateProfileInt( m_CurSec, key, defval, m_FileName );
   135  }
   136  
   137  bool kiIniFile::getBool( const char* key, bool defval )
   138  {
   139  	return (0 != ::GetPrivateProfileInt( m_CurSec,
   140  						key, defval?1:0, m_FileName ) );
   141  }
   142  
   143  const char* kiIniFile::getStr( const char* key, const char* defval )
   144  {
   145  	::GetPrivateProfileString( m_CurSec, key, defval,
   146  					m_StrBuf, sizeof(m_StrBuf), m_FileName );
   147  	return m_StrBuf;
   148  }
   149  
   150  
   151  //--------------------------- ini:writeŚn ----------------------------//
   152  
   153  
   154  bool kiIniFile::putStr( const char* key, const char* val )
   155  {
   156  	return (FALSE != ::WritePrivateProfileString(
   157  					m_CurSec, key, val, m_FileName ) );
   158  }
   159  
   160  bool kiIniFile::putInt( const char* key, int val )
   161  {
   162  	::wsprintf( m_StrBuf, "%d", val );
   163  	return putStr( key, m_StrBuf );
   164  }
   165  
   166  bool kiIniFile::putBool( const char* key, bool val )
   167  {
   168  	return putStr( key, val ? "1" : "0" );
   169  }