Rubrik: System/Windows · Sonstiges | VB-Versionen: VB4, VB5, VB6 | 20.01.02 |
Eintrag im Kontextmenü des Explorers entfernen Mit diesem VB-Code lassen sich Einträge, die dem Kontextmenü des Explorers hinzugefügt wurden, wieder entfernen. | ||
Autor: Dieter Otter | Bewertung: | Views: 21.539 |
www.tools4vb.de | System: Win9x, WinNT, Win8, Win10, Win11 | kein Beispielprojekt |
Vor längerer Zeit haben wir Ihnen gezeigt, wie sich Ihre Anwendung im Kontextmenü des Explorers verewigen lässt:
Eintrag ins Kontextmenü des Explorers
Wie lässt sich dieser Eintrag aber wieder entfernen?
Entweder manuell, in dem Sie die entsprechenden Einträge aus der Windows-Registrier-Datenbank löschen oder mit nachfolgender VB-Funktion.
Die Funktion Delete_ContextItem erwartet nur einen einzigen Parameter:
strText: Text, der als Menüeintrag im Kontextmenü erscheint
' zunächst die benötigten API-Deklarationen Private Declare Function RegOpenKeyEx Lib "advapi32.dll" _ Alias "RegOpenKeyExA" ( _ ByVal hKey As Long, _ ByVal lpSubKey As String, _ ByVal ulOptions As Long, _ ByVal samDesired As Long, _ phkResult As Long) As Long Private Declare Function RegDeleteKey Lib "advapi32.dll" _ Alias "RegDeleteKeyA" ( _ ByVal hKey As Long, _ ByVal lpSubKey As String) As Long Private Declare Function RegCloseKey Lib "advapi32.dll" ( _ ByVal hKey As Long) As Long Const HKEY_CLASSES_ROOT = &H80000000 Const KEY_SET_VALUE = &H2
Und hier die Löschfunktion
' Eintrag aus dem Kontextmenü des Explorers löschen Public Function Delete_ContextItem( _ ByVal strText As String) As Boolean Dim lResult As Long Dim hKey As Long Dim strKey As String ' Registry-Zweig öffnen strKey = "*\shell\" + strText lResult = RegOpenKeyEx(HKEY_CLASSES_ROOT, strKey, _ 0, KEY_SET_VALUE, hKey) If lResult = 0 Then ' SubKey \Command löschen lResult = RegDeleteKey(hKey, "Command") If lResult = 0 Then ' Registry-Zweig schliessen Call RegCloseKey(hKey) ' Registry-Zweig öffnen "*\shell)" strKey = "*\shell" lResult = RegOpenKeyEx(HKEY_CLASSES_ROOT, strKey, _ 0, KEY_SET_VALUE, hKey) If lResult = 0 Then ' SubKey "strText" löschen lResult = RegDeleteKey(hKey, strText) Delete_ContextItem = (lResult = 0) ' Registry-Zweig schliessen Call RegCloseKey(hKey) End If Else ' Registry-Zugriff schliessen Call RegCloseKey(hKey) End If End If End Function