2007年12月28日金曜日

レジストリを読み出す(advapi32)

advapi32を利用したレジストリ読み出し。HSP3標準エディタの「起動時のカレントディレクトリ」を読み出します。

事前にデータの大きさを知ることができる分、hspextよりも便利かもしれません。
ここでは利用していませんが、エラーの原因を詳しく追及することもできます。// 参考(というか丸写し)
//   ちょくとのページ:レジストリに保存してみる
//   http://yokohama.cool.ne.jp/chokuto/urawaza/registry.html

#uselib "advapi32.dll"
#func global RegCloseKey "RegCloseKey" sptr
#func global RegOpenKeyExA "RegOpenKeyExA" sptr,sptr,sptr,sptr,sptr
#func global RegQueryValueExA "RegQueryValueExA" sptr,sptr,sptr,sptr,sptr,sptr

#const  HKEY_CURRENT_USER   0x80000001
#const  KEY_QUERY_VALUE     0x0001

    // レジストリキーをオープン
    name = "Software\\OnionSoftware\\hsed3"
    RegOpenKeyExA HKEY_CURRENT_USER, name, 0KEY_QUERY_VALUEvarptr(hkey)
    if stat != 0 {
        dialog "キーをオープンできません。"1
        end
    }

    // データのサイズを取得
    RegQueryValueExA hkey, "startdir"000varptr(size) 
    if stat != 0 {
        mes "データサイズを取得できませんでした。"
    } else {
        mes strf("データサイズは%dバイトです。", size)

        // 文字列データを取得
        sdim result, size
        RegQueryValueExA hkey, "startdir"00varptr(result), varptr(size) 
        if stat != 0 {
            mes "データを取得できませんでした。"
        } else {
            mes result
        }
    }

    // レジストリキーのハンドルをクローズ
    RegCloseKey hkey
    stop

0 件のコメント: