>DLLはできるだけ使いたくありません。
DLLは必ず使わなければならないというのは分かりますか。
調べたところ色々とでてきました。
以下は[HSPBC]から引用しました。
http://www.rinku.zaq.ne.jp/ultimate/tips/
#uselib "advapi32.dll"
#cfunc global RegOpenKeyEx "RegOpenKeyExA" int, sptr, int, int, var
#cfunc global RegQueryValueEx "RegQueryValueExA" int, sptr, int, var, var, var
#func global regclose "RegCloseKey" int
#module
#defcfunc gethkey str string, local i, local s
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"
rstr = string
if strmid(rstr, 0, 1) ! "H" : return s(int(rstr))
if instr(rstr, , "\\") ! -1 : rstr = strmid(rstr, 0, instr(rstr, , "\\"))
foreach s
if s.cnt = rstr {
i = 0x80000000 + cnt
rstr = string
rstr = strmid(rstr, instr(rstr, , "\\") + 1, strlen(rstr) - instr(rstr, , "\\") - 1)
break
}
loop
return i
#defcfunc regopenkey var hkey, var path, int sa, local s
return RegOpenKeyEx(int(gethkey(path)), refstr, , (sa = 0) * 0x000F003F + sa, hkey)
#defcfunc reggetvalue var data, int hkey, str name, int type, local i
i = 256
i.1 = RegQueryValueEx(hkey, name, , i.2, data, i)
if type : data = i.2
return i.1
#global
sdim dat, 128
value = "ProcessorNameString"
type.0 = "NONE", "SZ", "EXPAND_SZ", "BINARY", "DWORD", "DWORD_BIG_ENDIAN"
type.6 = "LINK", "MULTI_SZ", "RESOURCE_LIST", "", "", "QWORD"
path = gethkey("2") + "\\HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0"
if regopenkey(key, path) {
mes "キーが存在しません"
} else {
if reggetvalue(dat, key, value) = 0 {
mes "CPU情報[ " + dat + " ]"
} else {
mes "値が存在しません"
}
regclose key
}
この場合はレジストリから取得しているので管理者権限は必要です。