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: #ifndef AFX_KIREGKEY_H__4FD5E1B3_B8FE_45B3_B19E_3D30407C94BA__INCLUDED_ 5128eecc9f 2011-02-23 kinaba: #define AFX_KIREGKEY_H__4FD5E1B3_B8FE_45B3_B19E_3D30407C94BA__INCLUDED_ 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: class kiRegKey 5128eecc9f 2011-02-23 kinaba: { 5128eecc9f 2011-02-23 kinaba: public: //-- 外向きインターフェイス -------------------------- 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: // 開く&閉じる 5128eecc9f 2011-02-23 kinaba: bool open( HKEY parent, LPCTSTR keyname, REGSAM access = KEY_ALL_ACCESS ); 5128eecc9f 2011-02-23 kinaba: bool create( HKEY parent, LPCTSTR keyname, REGSAM access = KEY_ALL_ACCESS ); 5128eecc9f 2011-02-23 kinaba: void close() 5128eecc9f 2011-02-23 kinaba: { 5128eecc9f 2011-02-23 kinaba: if( m_hKey ) 5128eecc9f 2011-02-23 kinaba: RegCloseKey( m_hKey ); 5128eecc9f 2011-02-23 kinaba: } 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: // サブキーが存在するや否や 5128eecc9f 2011-02-23 kinaba: bool exist( LPCTSTR keyname ) 5128eecc9f 2011-02-23 kinaba: { 5128eecc9f 2011-02-23 kinaba: HKEY k; 5128eecc9f 2011-02-23 kinaba: if( ERROR_SUCCESS==RegOpenKeyEx( m_hKey,keyname,0,KEY_READ,&k ) ) 5128eecc9f 2011-02-23 kinaba: { 5128eecc9f 2011-02-23 kinaba: RegCloseKey( k ); 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: // HKEYへキャスト 5128eecc9f 2011-02-23 kinaba: operator HKEY() const 5128eecc9f 2011-02-23 kinaba: { 5128eecc9f 2011-02-23 kinaba: return m_hKey; 5128eecc9f 2011-02-23 kinaba: } 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: // 値を得る 5128eecc9f 2011-02-23 kinaba: bool get( LPCTSTR valname, DWORD* val ); 5128eecc9f 2011-02-23 kinaba: bool get( LPCTSTR valname, BYTE* val, DWORD siz ); 5128eecc9f 2011-02-23 kinaba: bool get( LPCTSTR valname, kiStr* val ); 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: // 値を設定 5128eecc9f 2011-02-23 kinaba: bool set( LPCTSTR valname, DWORD val ); 5128eecc9f 2011-02-23 kinaba: bool set( LPCTSTR valname, BYTE* val, DWORD siz ); 5128eecc9f 2011-02-23 kinaba: bool set( LPCTSTR valname, LPCTSTR val ); 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: // 削除 5128eecc9f 2011-02-23 kinaba: bool del( LPCTSTR valname ); 5128eecc9f 2011-02-23 kinaba: bool delSubKey( LPCTSTR keyname ); 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: public: //-- 内部処理 ----------------------------------- 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: kiRegKey() 5128eecc9f 2011-02-23 kinaba: { 5128eecc9f 2011-02-23 kinaba: m_hKey = NULL; 5128eecc9f 2011-02-23 kinaba: } 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: virtual ~kiRegKey() 5128eecc9f 2011-02-23 kinaba: { 5128eecc9f 2011-02-23 kinaba: close(); 5128eecc9f 2011-02-23 kinaba: } 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: private: 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: HKEY m_hKey; 5128eecc9f 2011-02-23 kinaba: static bool delSubKeyRecursive( HKEY k, LPCTSTR n ); 5128eecc9f 2011-02-23 kinaba: }; 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: class kiIniFile 5128eecc9f 2011-02-23 kinaba: { 5128eecc9f 2011-02-23 kinaba: public: //-- 外向きインターフェイス -------------------------- 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: // iniファイル名を設定 5128eecc9f 2011-02-23 kinaba: void setFileName( const char* ini, bool exepath=true ); 5128eecc9f 2011-02-23 kinaba: void setSection( const char* section ) 5128eecc9f 2011-02-23 kinaba: { m_CurSec = section; } 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: // 読み込み 5128eecc9f 2011-02-23 kinaba: // ※ 注意!getStrの返値は内部バッファな為、 5128eecc9f 2011-02-23 kinaba: // ※ 呼び出し直後以外は内容を保証しない。 5128eecc9f 2011-02-23 kinaba: int getInt( const char* key, int defval ); 5128eecc9f 2011-02-23 kinaba: bool getBool( const char* key, bool defval ); 5128eecc9f 2011-02-23 kinaba: const char* getStr( const char* key, const char* defval ); 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: // 書き込み 5128eecc9f 2011-02-23 kinaba: bool putStr( const char* key, const char* val ); 5128eecc9f 2011-02-23 kinaba: bool putInt( const char* key, int val ); 5128eecc9f 2011-02-23 kinaba: bool putBool( const char* key, bool val ); 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: private: //-- 内部処理 ----------------------------------- 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: kiPath m_FileName; 5128eecc9f 2011-02-23 kinaba: kiStr m_CurSec; 5128eecc9f 2011-02-23 kinaba: char m_StrBuf[256]; 5128eecc9f 2011-02-23 kinaba: }; 5128eecc9f 2011-02-23 kinaba: 5128eecc9f 2011-02-23 kinaba: #endif