ライブラリの作成 ... Ver 1.0

  プロジェクト作成


  • プロジェクト名 : 「Realc」

  • レジストリアクセス用専用構造体作成

  • レジストリアクセス関数の作成




  •   構造体の定義



      
    struct USEREG {
    	HKEY Handle;
    	DWORD nIdx;
    	LPSTR szValueName;
    	LPSTR szValue;
    	DWORD nType;
    };
    typedef struct USEREG UREG;
    
    
      

    [ 注意 ]
    HKEY、DWORD、LPSTR というデータ型を使うには、「windows.h」が必要です。



      レジストリアクセス関数

      
    BOOL OpenReg( HKEY hKeyType, LPCSTR szPath, UREG *ureg );
    BOOL GetRegValue( UREG *ureg );
    BOOL CloseReg( UREG *ureg );
    
    
      

    [ 注意 ]
    構造体の定義と、上記関数宣言は、「Realc.h」に記述されます。



      各関数の仕様


  • OpenReg

    レジストリを RegOpenKeyEx でオープンし、メモリを確保して szValueName と szValue にセットする

  • GetRegValue

    nIdx に対応する レジストリデータを szValueName と szValue と nType にセットする

  • CloseReg

    確保したメモリを開放して、レジストリを閉じる




  •   OpenReg

      
    // *****************************************************************************
    // レジストリのオープン
    // *****************************************************************************
    BOOL OpenReg( HKEY hKeyType, LPCSTR szPath, UREG *ureg )
    {
    
    	LONG nRet;
    	BOOL bRet;
    
    	ureg->szValueName 	= (char *)GlobalAlloc( GMEM_FIXED, 512 );
    	ureg->szValue 		= (char *)GlobalAlloc( GMEM_FIXED, 512 );
    
    	nRet = RegOpenKeyEx(
    				hKeyType,
    				szPath,
    				0,
    				KEY_ALL_ACCESS,
    				&ureg->Handle
    			);
    	
    	if ( nRet != ERROR_SUCCESS ){
    		bRet = false;
    	}
    	else {
    		bRet = true;
    	}
    
    	return bRet;
    
    }
    
      

    [参考]
    GlobalAlloc --> http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_globalalloc.htm
    RegOpenKeyEx --> http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_regopenkeyex.htm
    RegQueryInfoKey --> http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_regqueryinfokey.htm



      CloseReg

      
    // *****************************************************************************
    // レジストリのクローズ
    // *****************************************************************************
    BOOL CloseReg( UREG *ureg )
    {
    
    	LONG nRet;
    	BOOL bRet;
    
    	GlobalFree( (HGLOBAL)ureg->szValue );
    	GlobalFree( (HGLOBAL)ureg->szValueName );
    
    	nRet = RegCloseKey( ureg->Handle );
    
    	if ( nRet != ERROR_SUCCESS ){
    		bRet = false;
    	}
    	else {
    		bRet = true;
    	}
    
    	return bRet;
    
    }
    
      

    [参考]
    GlobalFree --> http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_globalfree.htm
    RegCloseKey --> http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_regclosekey.htm



      GetRegValue

      
    // *****************************************************************************
    // レジストリの値の取得 (値の大きさ固定バージョン)
    // *****************************************************************************
    BOOL GetRegValue( UREG *ureg )
    {
    
    	BOOL	bRet;
    	LONG	nRet;
    	DWORD	size, size2;
    
    	size  = 512;
    	size2 = 512;
    
    	nRet = RegEnumValue(
    			ureg->Handle,
    			ureg->nIdx,
    			ureg->szValueName,
    			&size,
    			NULL,
    			&ureg->nType,
    			(LPBYTE)ureg->szValue,
    			&size2
    		);
    
    	ureg->szValueName[size]	= 0x00;
    	ureg->szValue[size2]	= 0x00;
    
    	if ( nRet != ERROR_SUCCESS ){
    		bRet = false;
    	}
    	else {
    		bRet = true;
    	}
    
    	return bRet;
    
    }
    
      

    [参考]
    RegEnumValue --> http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_regenumvalue.htm










      infoboard   管理者用   
    このエントリーをはてなブックマークに追加





    フリーフォントWEBサービス
    SQLの窓WEBサービス

    SQLの窓フリーソフト

    素材

    一般WEBツールリンク

    SQLの窓

    フリーソフト

    JSライブラリ