!KEY_ALL_ACCESS=$000F003F; #------------------------------------- !HKEY_CLASSES_ROOT=$80000000; !HKEY_CURRENT_USER=$80000001; !HKEY_LOCAL_MACHINE=$80000002; !HKEY_USERS=$80000003; !HKEY_CURRENT_CONFIG=$80000005; #------------------------------------- !REG_NONE=0;//型無し値 !REG_SZ=1;//文字列値 !REG_BINARY=3;//バイナリ !REG_DWORD=4;//DWORD(32ビット)値 !REG_QWORD=11;//QWORD(64ビット)値 !REG_MULTI_SZ=7;//複数行文字列値 !REG_EXPAND_SZ=2;//展開可能文字列値 !REG_DWORD_BIG_ENDIAN=5; !REG_LINK=6; !REG_RESOURCE_LIST=8; ●RegOpenKeyEx(hKey,lpSubKey,ulOptions,samDesired,phkResult) =DLL("advapi32.dll","LONG RegOpenKeyExA(HKEY hKey,LPCTSTR lpSubKey,DWORD ulOptions,DWORD samDesired,PHKEY hKeyA)") ●RegCreateKeyEx(hkey,subkey,reserved,class,option,sa,psa,rehkey,state)=DLL("advapi32.dll","LONG RegCreateKeyExA(HKEY hKey,LPCTSTR subKey,DWORD reserved,LPCTSTR class,DWORD option,DWORD sa,LPCTSTR psa,DWORD rehkey,PHKEY state)") ●RegQueryValueEx(hKey,lpValueName,lpReserved,lpType,{参照渡し}lpData,lpcbData)=DLL("advapi32.dll","LONG RegQueryValueExA(HKEY hKey,LPCTSTR lpValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE lpData,LPDWORD lpcbData)") ●RegSetValueEx(hKey,lpValueName,Reserved,dwType,lpData,cbData)=DLL("advapi32.dll","LONG RegSetValueExA(HKEY hKey,LPCTSTR lpValueName,DWORD Reserved,DWORD dwType,DWORD lpData,DWORD cbData)") ●RegDeleteValue(hkey,subkey)=DLL("advapi32.dll","LONG RegDeleteValueA(HKEY hKey,LPCTSTR pName)") ●RegDeleteKey(hkey,subkey)=DLL("advapi32.dll","LONG RegDeleteKeyA(HKEY hKey,LPCTSTR subkey)") ●RegCloseKey(hKey)=DLL("advapi32.dll","LONG RegCloseKey(HKEY hKey)") ●APIレジストリ開く(Sの|Sを)  Hとは整数  親キーとは整数  (Sから「\」まで切り取る)で条件分岐   「HKEY_CLASSES_ROOT」ならば、親KEY=HKEY_CLASSES_ROOT   「HKEY_CURRENT_USER」ならば、親KEY=HKEY_CURRENT_USER   「HKEY_LOCAL_MACHINE」ならば、親KEY=HKEY_LOCAL_MACHINE   「HKEY_USERS」ならば、親KEY=HKEY_USERS   「HKEY_CURRENT_CONFIG」ならば、親KEY=HKEY_CURRENT_CONFIG   違えば、エラー発生  RegOpenKeyEx(親KEY,S,0,KEY_ALL_ACCESS,POINTER(H))  Hで戻る ●APIレジストリキー作成(HでSを)  KeyHとは整数//新規作成したキーのハンドル  Key存在とは整数//0:作成に失敗 1:新規作成 2:既に存在  RegCreateKeyEx(H,S,0,0,0,KEY_ALL_ACCESS,0,POINTER(KeyH),POINTER(Key存在))  もし、Key存在=0ならばエラー発生  KeyHで戻る ●APIレジストリ読む(HでSを)  DATAとは文字列;型とは整数;SIZEとは整数=$FF;  DATAにSIZEを確保  RegQueryValueEx(H,S,0,POINTER(型),DATA,POINTER(SIZE))  DATAで戻る ●APIレジストリ書く(HでSに{=?}型のAを)  もし、型=空ならば、型=REG_SZ  SIZEとは整数=Aのバイト数  もし、型=REG_DWORDならば、SIZE=4  もし、型=REG_QWORDならば、SIZE=8  RegSetValueEx(H,POINTER(S),0,型,POINTER(A),SIZE) ●APIレジストリキー削除(HでSを)〜RegDeleteKey(H,POINTER(S)) ●APIレジストリ値削除(HでSを)〜RegDeleteValue(H,POINTER(S)) ●APIレジストリ型確認(HでSの)  DATAとは文字列;型とは整数;SIZEとは整数=$FF;  DATAにSIZEを確保  RegQueryValueEx(H,S,0,POINTER(型),DATA,POINTER(SIZE))  型で条件分岐   0ならば「REG_NONE」で戻る   1ならば「REG_SZ」で戻る   2ならば「REG_EXPAND_SZ」で戻る   3ならば「REG_BINARY」で戻る   4ならば「REG_DWORD」で戻る   5ならば「REG_DWORD_BIG_ENDIAN」で戻る   6ならば「REG_LINK」で戻る   7ならば「REG_MULTI_SZ」で戻る   8ならば「REG_RESOURCE_LIST」で戻る   11ならば「REG_QWORD」で戻る   違えば空で戻る ●APIレジストリ閉じる(Hの|Hを)〜RegCloseKey(H) /*サンプル H=「HKEY_CLASSES_ROOT\.nako」のAPIレジストリ開く H2=Hで「TestKey」をAPIレジストリキー作成 H2で「TestValue1」に「こんにちは」をAPIレジストリ書く H2で「TestValue1」をAPIレジストリ読み、表示 H2で「TestValue1」のAPIレジストリ型確認を表示 #H2で「TestValue1」をAPIレジストリ値削除 H2で「TestValue2」にREG_DWORDの123をAPIレジストリ書く H2で「TestValue2」をAPIレジストリ読み、表示 H2で「TestValue2」のAPIレジストリ型確認を表示 #H2で「TestValue2」をAPIレジストリ値削除 Hで「TestKey」をAPIレジストリキー削除 HをAPIレジストリ閉じる */