AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Delphi-PRAXiS - Lounge Betriebssysteme Erweiterung Kontextmenü im Windows Explorer
Thema durchsuchen
Ansicht
Themen-Optionen

Erweiterung Kontextmenü im Windows Explorer

Ein Thema von pesi · begonnen am 26. Jul 2017 · letzter Beitrag vom 27. Jul 2017
 
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
989 Beiträge
 
Delphi 6 Professional
 
#3

AW: Erweiterung Kontextmenü im Windows Explorer

  Alt 26. Jul 2017, 18:30
Hmm..

Es geht auch ohne shell extension.

(Habe erst letzte Woche damit experimentiert )

Bei shell extension muss die DLL sowohl als 32Bit, wie auch als 64Bit erstellt werden, da z.B. unter 64Bit Windows der Explorer auch immer 64bit ist und entsprechend nur eine 64Bit DLL laden kann.
Jedoch wird z.B. beim OpenDialog einer 32Bit App der 32Bit Explorer geladen und dieser braucht dann eine 32Bit DLL....

Hier mal als Beispiel ne .Reg, welche ein Menü-Eintrag mit 3 Sub Einträgen erzeugt (Notepad, Trenner, Word):

Code:
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Classes\*\shell\CascadeTest]
"MUIVerb"="Test Cascade Menu"
"SubCommands"=""

[HKEY_CURRENT_USER\Software\Classes\*\shell\CascadeTest\Shell]

[HKEY_CURRENT_USER\Software\Classes\*\shell\CascadeTest\Shell\Cmd1]
@=""
"ICON"="\"C:\\Windows\\system32\\notepad.exe\",0"
"MUIVerb"="Open with Notepad"

[HKEY_CURRENT_USER\Software\Classes\*\shell\CascadeTest\Shell\Cmd1\command]
@="notepad.exe \"%V\""

[HKEY_CURRENT_USER\Software\Classes\*\shell\CascadeTest\Shell\Cmd2-Spacer]

[HKEY_CURRENT_USER\Software\Classes\*\shell\CascadeTest\Shell\Cmd3]
"MUIVerb"="Wordpad"

[HKEY_CURRENT_USER\Software\Classes\*\shell\CascadeTest\Shell\Cmd3\command]
@="wordpad.exe \"%V\""
SubCommands="" sorg dafür, dass Untermenüs möglich sind.
MUIVerb = "xxx" ist für die Beschriftung

Wichtig sind auch die '"' bei der %V, damit auch Dateinamen mit Leerzeichen korrekt als Parameter übergeben wird.
Und verwende %V statt %1, mit %1 hat es an und ab nicht geklappt..

Auch funktionieren DOS-Variablen wie %SYSTEM% nicht im command..

Wenn Du Einträge in einer bestimmten Reihenfolge brauchst, dann müssen die Subcommands (hier 'Cmd1','CM2..) so benannt werden, dass sie Alphabetisch aufsteigend sind!

Edit:
Ach es ist mir aufgefallen, das ich hier die Shell vom 'HKEY_CURRENT_USER\Software\Classes\*\shell' verwende, ist aber identisch zu 'HKEY_CLASSES_ROOT\*\shell', mit dem Unterschied, dass unter HKEY_CLASSES_ROOT eingetragene Menüs bei allen Usern auf dem Rechner erscheinen, bei HKEY_CURRENT_USER nur beim aktuell angemeldeten. Außerdem benötigt man unter HKEY_CLASSES_ROOT elevated Rechte, wenn deine Menüs durch dein Tool angelegt werden, hingegen unter HKEY_CURRENT_USER nicht

Ach ja für Verzeichnisse verwende 'HKEY_CLASSES_ROOT\Directory\shell', bzw. 'HKEY_CURRENT_USER\Software\Classes\Directory\shel l' um dort entsprechende Menüs anzulegen.

Geändert von HolgerX (26. Jul 2017 um 18:39 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz