ll_libload advapi, "advapi32.dll"
ll_getproc RegCreateKeyEx, "RegCreateKeyExA", advapi
ll_getproc RegCloseKey, "RegCloseKey", advapi
#module
#deffunc gethkey str
mref string, 32
sdim s, 22, 7
mref stt, 64
mref rstr, 65
s.0 = "HKEY_CLASSES_ROOT", "HKEY_CURRENT_USER", "HKEY_LOCAL_MACHINE", "HKEY_USERS"
s.4 = "HKEY_PERFORMANCE_DATA", "HKEY_CURRENT_CONFIG", "HKEY_DYN_DATA"
strmid rstr, string, 0, 1
if rstr ! "H" {
i = 0 + rstr
rstr = s.i
return
}
instr i, string, "\\"
if i ! -1 : strmid rstr, string, 0, i : else : rstr = string
stt = 0
repeat 7
if s.cnt = rstr {
stt = 0x80000000 + cnt
instr i.0, string, "\\"
strlen i.1, string
strmid rstr, string, i + 1, i.1 - i.0 - 1
break
}
loop
return
#deffunc regcreatekey val, str, int
mref hkey, 16 : mref path, 33 : mref sa, 2
mref stt, 64
gethkey path
if stat = 0 : return
path = refstr
prm = stat, 0, 0, 0, 0, (sa = 0) * 0x000F003F + sa
ll_getptr path : ll_ret prm.1
ll_getptr hkey : ll_ret prm.7
ll_getptr i.1 : ll_ret prm.8
ll_callfunc prm, 9, RegCreateKeyEx@
ll_ret prm
if prm : stt = 0 : else : stt = i.1
return
#deffunc regclose int
mref hkey, 0
ll_callfunc hkey, 1, RegCloseKey@
return
#global
sdim list, 132
sdim sub, 256
dim key, 2
repeat 7
if cnt : list += "\n"
gethkey "" + cnt
list += refstr
loop
index = 1
sub = "software\\hspbc"
objsize 250, 20
pos 10, 10 : mes "メインキー"
pos 120, 10 : combox index, , list
pos 10, 40 : mes "サブキー"
pos 120, 40 : input sub, 250
pos 120, 70 : button "キーを作成する", *create
notesel list
stop
*create
noteget main, index
path = main + "\\" + sub
// サブキーを作成
regcreatekey key, path
if stat {
if stat = 1 {
dialog "作成に成功しました", , "作成キー:" + key
} else {
dialog "キーは既に存在しています", , "オープンキー:" + key
}
regclose key // サブキーを閉じる
} else {
dialog "[" + path + "]の作成に失敗しました", 1
}
stop
|