レジストリのキーを削除(U)          <TOP>


SHDeleteKey レジストリツリーを削除
FormatMessage メッセージの文字列を指定の書式で取得
 

図は、「FBTips」が存在する場合と、存在しない場合の状態を表しています。

削除前と削除後

 

'================================================================
'= レジストリのキーを削除(U)
'=    指定したキーが持つサブキーを含めて削除
'=    (SHDeleteKey.bas)
'================================================================
#include "Windows.bi"

' レジストリツリーを削除する。
Declare Function Api_SHDeleteKey& Lib "shlwapi" Alias "SHDeleteKeyA" (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_SHDeleteKey(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