レジストリキーに関する情報を取得(U) <TOP>
RegOpenKeyEx
レジストリのキーのハンドルを確保
SHQueryInfoKey
レジストリキーに関する情報を取得
RegCloseKey
レジストリのハンドルを解放
'================================================================ '= レジストリキーに関する情報を取得 '= (SHQueryInfoKey.bas) '================================================================ #include "Windows.bi" #define HKEY_USERS -2147483645 'Windowsを利用するユーザー個別の情報 #define HKEY_LOCAL_MACHINE -2147483646 'PCを利用するユーザーに共通の設定情報 #define HKEY_CURRENT_USER -2147483647 '現在Windowsにログインしているユーザーの情報 #define HKEY_CLASSES_ROOT -2147483648 '拡張子に関する情報や、それらとアプリケーションとの関連づけに関する情報 #define KEY_QUERY_VALUE &H1 'サブキーデータを問い合わせるためのアクセス権 #define ERROR_SUCCESS &H0 '正常終了の戻り値を示す ' レジストリのキーのハンドルを確保 Declare Function Api_RegOpenKeyEx& Lib "advapi32" Alias "RegOpenKeyExA" (ByVal hKey&, ByVal lpSubKey$, ByVal ulOptions&, ByVal samDesired&, phkResult&) ' レジストリキーに関する情報を取得 Declare Function Api_SHQueryInfoKey& Lib "Shlwapi" Alias "SHQueryInfoKeyA" (ByVal hkey&, pcSubKeys&, pcchMaxSubKeyLen&, pcValues&, pcchMaxValueNameLen&) ' レジストリのハンドルを解放 Declare Function Api_RegCloseKey& Lib "advapi32" Alias "RegCloseKey" (ByVal hKey&) Var Shared List1 As Object Var Shared Button1 As Object List1.Attach GetDlgItem("List1") : List1.SetFontSize 14 List1.SetWindowSize 202, 62 Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var SubKey As String Var hSubKey As Long Var SubKeys As Long Var SubKeyLength As Long Var Values As Long Var ValueNameLength As Long Var Ret As Long 'リストビューを初期化 List1.ResetContent 'サブキーを設定 SubKey = "" 'レジストリを読み取りモードでオープン Ret = Api_RegOpenKeyEx(HKEY_LOCAL_MACHINE, SubKey, 0, KEY_QUERY_VALUE, hSubKey) 'オープンできたときは If Ret = ERROR_SUCCESS Then '指定したキーのレジストリ情報を取得 Ret = Api_SHQueryInfoKey(hSubKey, SubKeys, SubKeyLength, Values, ValueNameLength) 'レジストリ情報が取得できたとき If Ret = ERROR_SUCCESS Then 'レジストリ情報を表示 List1.AddString "サブキーの数 :" & Str$(SubKeys) List1.AddString "サブキーの最大文字数:" & Str$(SubKeyLength) List1.AddString "値の数 :" & Str$(Values) List1.AddString "値の最大文字数 :" & Str$(ValueNameLength) 'レジストリ情報が取得できなかったとき Else 'エラーメッセージを表示 List1.AddString "取得できませんでした。" End If 'ハンドルをクローズ Ret = Api_RegCloseKey(hSubKey) 'オープンできなかったとき Else 'エラーメッセージを表示 List1.AddString "オープンできませんでした。" End If End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End