レジストリのキーを削除(V) <TOP>
SHDeleteEmptyKey 空のレジストリツリーを削除
FormatMessage メッセージの文字列を指定の書式で取得
図は、「FBTips」が存在する場合と、存在しない場合の状態を表しています。
削除前と削除後
'================================================================ '= レジストリのキーを削除(V) '= 指定したキーがサブキーを持つ場合削除しない '= (SHDeleteEmptyKey.bas) '================================================================ #include "Windows.bi" ' 空のレジストリツリーを削除 Declare Function Api_SHDeleteEmptyKey& Lib "shlwapi" Alias "SHDeleteEmptyKeyA" (ByVal hkey&, ByVal pszSubKey$) ' メッセージの文字列を指定の書式で取得 Declare Function Api_FormatMessage& Lib "Kernel32" Alias "FormatMessageA" (ByVal dwFlags&, lpSource As Any, ByVal dwMessageId&, ByVal dwLanguageId&, ByVal lpBuffer$, ByVal nSize&, Arguments&) #define FORMAT_MESSAGE_FROM_SYSTEM &H1000 'メッセージ定義として、システムメッセージテーブルリソースを使用するよう要求 #define HKEY_CURRENT_USER -2147483647 '現在Windowsにログインしているユーザーの情報 Var Shared Text1 As Object Var Shared Text2 As Object Var Shared Button1 As Object Text1.Attach GetDlgItem("Text1") : Text1.SetFontSize 14 Text2.Attach GetDlgItem("Text2") : Text2.SetFontSize 14 Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 Var Shared SubKey As String '================================================================ '= '================================================================ Declare Sub MainForm_Start edecl () Sub MainForm_Start() Subkey = "Software\Tokovalue\FBTips" Text1.SetWindowText SubKey End Sub '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var ErrCode As Long Var Buffer As String Var Ret As Long ErrCode = Api_SHDeleteEmptyKey(HKEY_CURRENT_USER, Subkey) Buffer = Space$(256) Ret = Api_FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0, ErrCode, 0, Buffer, Len(Buffer), ByVal 0) Text2.SetWindowText Left$(Buffer, Ret) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End