Eintrag ins Windows-Explorer Contextmenü

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Gather.

    Eintrag ins Windows-Explorer Contextmenü

    Hallo liebe Community.
    Ich weiß dieses Thema wurde schon mehrmals behandelt. Dennoch stoße ich bei der ausführung auf Probleme.

    Mein Code:

    VB.NET-Quellcode

    1. Imports Microsoft.Win32
    2. Public Class Form1
    3. Public Class ExplorerContextMenu
    4. ''' <summary>
    5. ''' Fügt dem Kontextmenü des Windows Explorers einen Eintrag für einen Dateityp hinzu.
    6. ''' Bei Erfolg wird True zurückgegeben, sonst False.
    7. ''' </summary>
    8. ''' <param name="extension">Der Dateityp. Beispiel: .txt</param>
    9. ''' <param name="text">Der Text des Eintrags. Beispiel: In JSEdit öffnen</param>
    10. ''' <param name="command">Der aufzurufende Befehl. Beispiel: C:\jsedit.exe "%1"</param>
    11. Public Shared Function AddToExplorerContextMenu(ByVal extension As String, _
    12. ByVal text As String, ByVal command As String) As Boolean
    13. ' Beispiel der Kommentare:
    14. ' extension=.js
    15. ' text=In JSEdit öffnen
    16. ' command= C:\jsedit.exe "%1"
    17. Try
    18. ' Öffnen: HKEY_CLASSES_ROOT\.js
    19. Dim Extensionkey As RegistryKey = Registry.ClassesRoot.CreateSubKey(extension)
    20. ' Öffnen: HKEY_CLASSES_ROOT\.js\Shell
    21. Dim Shellkey As RegistryKey = Extensionkey.CreateSubKey("Shell")
    22. ' Öffnen: HKEY_CLASSES_ROOT\.js\Shell\In JSEdit bearbeiten
    23. Dim Entrykey As RegistryKey = Shellkey.CreateSubKey(text)
    24. ' Öffnen: HKEY_CLASSES_ROOT\.js\Shell\In JSEdit bearbeiten\command
    25. Dim Commandkey As RegistryKey = Entrykey.CreateSubKey("command")
    26. Commandkey.SetValue("", command)
    27. Commandkey.Close()
    28. Entrykey.Close()
    29. Shellkey.Close()
    30. Extensionkey.Close()
    31. Return True
    32. Catch ex As Exception
    33. Return False
    34. End Try
    35. End Function
    36. ''' <summary>
    37. ''' Entfernt einen Eintrag eines Dateityüs aus dem Kontextmenü des Windows Explorers.
    38. ''' </summary>
    39. ''' <param name="extension">Siehe AddToExplorerContextMenu()</param>
    40. ''' <param name="text">Siehe AddToExplorerContextMenu()</param>
    41. Public Shared Function RemoveFromExplorerContextMenu(ByVal extension As String, _
    42. ByVal text As String) As Boolean
    43. Try
    44. ' Öffnen: HKEY_CLASSES_ROOT\.js
    45. Dim Extensionkey As RegistryKey = Registry.ClassesRoot.OpenSubKey(extension, True)
    46. ' Öffnen: HKEY_CLASSES_ROOT\.js\Shell
    47. Dim Shellkey As RegistryKey = Extensionkey.OpenSubKey("Shell", True)
    48. ' Entfernen: HKEY_CLASSES_ROOT\.js\Shell\In JSEdit bearbeiten
    49. Shellkey.DeleteSubKeyTree(text)
    50. Shellkey.Close()
    51. Extensionkey.Close()
    52. Return True
    53. Catch ex As Exception
    54. Return False
    55. End Try
    56. End Function
    57. End Class
    58. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    59. ExplorerContextMenu.AddToExplorerContextMenu(".js", _
    60. "In JSEdit bearbeiten", "C:\jsedit.exe ""%1""")
    61. End Sub
    62. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    63. ExplorerContextMenu.RemoveFromExplorerContextMenu(".js", _
    64. "In JSEdit bearbeiten")
    65. End Sub
    66. End Class


    Quelle: (vbarchiv.net/tipps/tipp_1885-e…indows-explorers-net.html)

    Es treten keine Fehler auf, dennoch, wenn ich das Programm debugge und die Funktion aufrufe passiert nichts.

    Was soll ich tun?

    Ich weiß das man einträge in die REgistry schreibt dennoch scheint mir diese lösung (wenn sie funktionieren würde) auf sinnvollsten.
    Da sie nur bei manchen endungen "aktiviert" wird.
    Und man sie wieder Removen kann. (Geht auch bei anderen)


    Bitte um Hilfe UND Erläuterung!
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Als ob ich das nicht probiert hätte. Ich bin kein Anfänger mehr.

    Selbst wenn ich Trys entferne und es teste tritt nur eine Meldung auf das der zugriff verweigert worden ist.
    Dann starte ich das Programm als Admin, sie kommt nicht und nichts passiert.
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    der code wird dann funz wenn du Datei mit eine Dateiendung (z.b txt) mit rechte maustaste anklikst, dann erscheint in KontexMenü deine Anwendung, am sonsten wird der Code nicht funz,
    NO WAY!!!

    oh mein gott, Das ist mir schon die ganze zeit klar. Doch es wird kein Eintrag hinzugefügt!
    Und dein Link, das Programm hab ich auchschon getestet....geht ebensfalls nicht. Ich glaub ja das is für XP
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!


    Er erstellt die Ordner und alles aber irgendwie passiert nichts.
    Mfg: Gather
    Private Nachrichten bezüglich VB-Fragen werden Ignoriert!