…と書き込んだはいいものの、質問に質問で返すと手返しが悪くなるので、的外れかもしれませんがQWORDでの書き込みについても一応付記しておきます。
64ビット整数を生で扱うことは現状のHSPではできないですが、32ビット整数を2つ使えば表現力は64ビット同じなので、32ビット2つ受け取って64ビットとしてレジストリに書き込むサンプルです。
モジュールに下記のコードを追加してください。(追加するのは#globalの直前ですね)
#define REG_QWORD 0x0000000b
/**
指定したキーにデータ(QWORD)を書き込みます。キーがない場合は作成します。
@param key キー名
@param hiword 書き込むデータ上位4バイト
@param loword 書き込むデータ下位4バイト
@return 1で成功,0で失敗
*/
#deffunc regwriteq str key,int hiword,int loword,local hkey,local subkey,local valuename,local handle,local flag,local datatype,local ldata
hkey = getHKeyByKey(key)
subkey = getSubKeyByKey(key)
valuename = getValueNameByKey(key)
if((hkey==0)||(subkey=="")||(valuename=="")) {
return 0
}
handle = 0
flag = RegCreateKeyExA(hkey,varptr(subkey),0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,varptr(handle),NULL)
if(flag!=ERROR_SUCCESS) {
return 0
}
dim ldata, 2
ldata(0) = loword
ldata(1) = hiword
flag = RegSetValueExA(handle,varptr(valuename),NULL,REG_QWORD,varptr(ldata),8)
datatype = RegCloseKey(handle)
if(flag!=ERROR_SUCCESS) {
return 0
}else {
return 1
}
テスト実行のコードは下記です。
#include "registrymodule.hsp"
key = "HKEY_CURRENT_USER\\Software\\TestSoftware\\TestValueQ"
dialog strf("今から下記のレジストリに書き込みします、よろしいですか?\n%s", key), 3
if ( stat == 7 ) : end
// キー名、上位4バイト、下位4バイト
regwriteq key, 0x01234567, 0x89abcdef
ts = "失敗"
if ( stat ) : ts = "成功"
dialog "書き込みました\n"+ts
end