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
Antwort Antwort
Seite 1 von 2  1 2      
pesi

Registriert seit: 29. Aug 2003
Ort: 36217 Ronshausen
117 Beiträge
 
Delphi XE5 Professional
 
#1

Erweiterung Kontextmenü im Windows Explorer

  Alt 26. Jul 2017, 17:54
Betriebssystem: Win 7,Win 10
Hallo,

wie man eine einfache Erweiterung im Kontextmenü des Explorers hinbekommt habe ich schon herausgefunden.
Da geht es um die Einträge in der Registry unter HKEY_CLASSES_ROOT\*\shell\..... (siehe Screenshot)

Ich würde nun aber gerne unterhalb meines Eintrages weitere Unter-Einträge haben, also die sich dann aufklappen wie z.B. beim "Senden an" oder "Freigeben für".
Dafür habe ich leider bisher noch nichts gefunden. Entweder hat mir bisher das richtige Schlüsselwort zum Googlen gefehlt oder gibt es diese Möglichkeit nicht

Danke für Eure Hilfe

Gruß Peter
Miniaturansicht angehängter Grafiken
regeintrag.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#2

AW: Erweiterung Kontextmenü im Windows Explorer

  Alt 26. Jul 2017, 17:58
Stichwort: shell extension

http://www.delphipraxis.net/163141-w...erweitern.html
www.del-net.com/delphi/topic10.html
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
HolgerX

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

AW: Erweiterung Kontextmenü im Windows Explorer

  Alt 26. Jul 2017, 19: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 19:39 Uhr)
  Mit Zitat antworten Zitat
pesi

Registriert seit: 29. Aug 2003
Ort: 36217 Ronshausen
117 Beiträge
 
Delphi XE5 Professional
 
#4

AW: Erweiterung Kontextmenü im Windows Explorer

  Alt 26. Jul 2017, 19:47
SEHR COOL Holger! Vielen lieben Dank - genau das was ich gesucht habe!

Funktioniert auch FAST perfekt, nur Dein "Cmd2-spacer" Eintrag macht nicht was ich vermute was er machen soll. Er erzeugt nämlich keine Leerzeile oder Trennstrich sonder einen weiteren Texteintrag "Cmd2-spacer" Okay, so einen Trenner brauche ich nicht zwingend, aber wenn wir schon dabei sind, vielleicht hast Du da ja nur was vergessen???

Danke & Gruß
  Mit Zitat antworten Zitat
pesi

Registriert seit: 29. Aug 2003
Ort: 36217 Ronshausen
117 Beiträge
 
Delphi XE5 Professional
 
#5

AW: Erweiterung Kontextmenü im Windows Explorer

  Alt 26. Jul 2017, 19:48
Ach so und das mit den CURRENT USER etc. war mir soweit eh klar, aber trotzdem danke auch für diese Hinweise!
  Mit Zitat antworten Zitat
HolgerX

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

AW: Erweiterung Kontextmenü im Windows Explorer

  Alt 27. Jul 2017, 08:01
Hmm..

Funktioniert auch FAST perfekt, nur Dein "Cmd2-spacer" Eintrag macht nicht was ich vermute was er machen soll. Er erzeugt nämlich keine Leerzeile oder Trennstrich sonder einen weiteren Texteintrag "Cmd2-spacer" Okay, so einen Trenner brauche ich nicht zwingend, aber wenn wir schon dabei sind, vielleicht hast Du da ja nur was vergessen???
Ich Verwende hier Windows 7 64Bit.
Hier wird eine mit "Cmd2-spacer" eine Trennlinie erzeugt, was aber auch am klassischen Desktop liegen kann.

Edit
Hab da mal was gefunden:
https://blog.sverrirs.com/2014/05/cr...-items-in.html

Geändert von HolgerX (27. Jul 2017 um 08:20 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#7

AW: Erweiterung Kontextmenü im Windows Explorer

  Alt 27. Jul 2017, 09:10
So wird auch @="-" kein Spacer daraus?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
HolgerX

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

AW: Erweiterung Kontextmenü im Windows Explorer

  Alt 27. Jul 2017, 09:23
So wird auch @="-" kein Spacer daraus?
Leider nicht, dann wird ein '-' als Bezeichnung angezeigt.

Jedoch geht es mit "CommandFlags"=dword:00000040 innerhalb eines SubEintrages.
(Siehe meinen Link).
  Mit Zitat antworten Zitat
HolgerX

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

AW: Erweiterung Kontextmenü im Windows Explorer

  Alt 27. Jul 2017, 09:39
Hier mal ein kleines Muster

Code:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\CascadeTest]
"MUIVerb"="Test Cascade Menu"
"Position"="Top"
"SeparatorAfter"=""
"SeparatorBefore"=""
"SubCommands"=""

[HKEY_CLASSES_ROOT\*\shell\CascadeTest\Shell]

[HKEY_CLASSES_ROOT\*\shell\CascadeTest\Shell\Cmd1]
"CommandFlags"=dword:00000040
"MUIVerb"="Öffene über Explorer"
"ICON"="explorer.exe,0"

[HKEY_CLASSES_ROOT\*\shell\CascadeTest\Shell\Cmd1\command]
@="explorer.exe \"%V\""

[HKEY_CLASSES_ROOT\*\shell\CascadeTest\Shell\Cmd2]
"ICON"="\"notepad.exe\",0"
"MUIVerb"="Open with Notepad"

[HKEY_CLASSES_ROOT\*\shell\CascadeTest\Shell\Cmd2\command]
@="\"notepad.exe\" \"%V\""

[HKEY_CLASSES_ROOT\*\shell\CascadeTest\Shell\Cmd3]
"ICON"="\"%ProgramFiles%\\Windows NT\\Accessories\\wordpad.exe\",0"
"MUIVerb"="Wordpad"

[HKEY_CLASSES_ROOT\*\shell\CascadeTest\Shell\Cmd3\command]
@="wordpad.exe \"%V\""
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#10

AW: Erweiterung Kontextmenü im Windows Explorer

  Alt 27. Jul 2017, 10:21
Dann noch 'ne interessante Frage

Ist %ProgramFiles% in einem 32 Bit-Explorer was Anderes, als im 64 Bit-Explorer?
Und was passiert irgendwann im 256 Bit-Explorer?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz