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