Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi "freies" Contextmenu des Explorers (https://www.delphipraxis.net/187563-freies-contextmenu-des-explorers.html)

Mattze 9. Dez 2015 14:52

"freies" Contextmenu des Explorers
 
Hi,

wurde bestimmt schon oft gefragt, aber es ist doch immer wieder schön... ;-)

Wenn man im Windows Explorer auf eine freie Stelle rechtsclickt, wird ein "angepasstes" Contextmenu angezeigt. Das fängt oft mit "Ansicht" an und hört mit "neu" und "Eigenschaften" auf.

1. Wie kann ich dieses Menu in meinem Programm direkt aufrufen?
2. Wie kann ich dieses (allgemein jedes Explorer-Contextmenu) temporär, nur zur Laufzeit meines Programmes und nur in diesem um Einträge erweitern?
3. Wie kann ich dieses "allgemeine" Contextmenu dazu bringen, meinen Code auszuführen, wenn ich ein Item anclicke? Und das auch nur in meinem Programm. (Dazu: Wie kann ich ein Item davon überzeugen, mein eigenes PopUp als Untermenu anzuzeigen?)

Das sind zwar drei Fragen, aber ich hoffe, Ihr seid mir trotzdem nicht böse, weil das alles unmittelbar zusammenhängt.

(IcontexMenu und IContextMenu2 habe ich mir angeguckt. Aber da bin ich nicht richtig schlau draus geworden. Es scheint auch nur für Dateien und Ordner zu funktionieren.)

(Delphi7 pro, Win 7 und höher)

Gruß
Mattze

EWeiss 9. Dez 2015 17:25

AW: "freies" Contextmenu des Explorers
 
Nur mal so Nachgefragt!

Mir erschließt sich der Sinn nicht warum man in seinem Programm das Explorer Contextmenu einbinden will.
Es sei denn man baut einen eigenen Datei Manager. (Dafür gibt es Komponenten welche das Menu unterstützen)
Warum also das Menu einbinden wenn die Funktionen des gleichen keinerlei nutzen für dein Programm hat.

gruss

Mattze 9. Dez 2015 19:50

AW: "freies" Contextmenu des Explorers
 
Hi,

1. Die Frage war nicht, nach dem warum, sondern wie.
2. Ich habe einen eigenen Dateimanager, der das eben nicht kann.
3. Ich nutze dazu VirtualExplorerEasyListview. Da wird zwar ordentlich das Kontextmenu von Dateien und Ordnern angezeigt, aber eben nicht dieses "freie" Menu. (Deshalb habe ich es auch jetzt erst, nach einiger Zeit, bemerkt. Der Ultraexplorer vom Komponentenentwickler Jim Kuehnemann kann das aber. Allerdings hat er dafür eine Extraklasse gebastelt: TBckgrdKontexmenu oder so. Da ich aber nicht die Quellen des Ultraexplorers in einer ordentlichen Version habe und sie im Netz auch nicht - mehr - finde, kann ich das nicht ordentlich nachvollziehen. Und alleine komme ich eben leider nicht darauf.)

Reicht die Erklärung?

Ich würde mich sehr über eine Lösung meines Problems freuen.

Gruß
Mattze

himitsu 10. Dez 2015 13:05

AW: "freies" Contextmenu des Explorers
 
Es gab irgendwo (glaub auf Torry) mal ein Beispiel, wie man das Exploer-Kontextmenü auslesen und in ein eigenes TPopupMenu kopieren konnte. :gruebel:

[add]
:roll:

[GOOGLE]delphi explorer menü auslesen[/GOOGLE]
http://www.delphipraxis.net/79838-ex...wendung-3.html
http://entwickler-forum.de/showthrea...erken-auslesen

Mattze 10. Dez 2015 18:43

AW: "freies" Contextmenu des Explorers
 
Hi,

vielen Dank für Deine Antwort.
Leider passt genau diese Antwort nicht und indem ich "freies" schrieb, wollte ich das vermeiden. Es ist natürlich trotzdem interessant, wenn man das alles verfolgt...

Ich meinte eben nicht das "gewöhnliche" Explorer-Datei-Popup. Das ist kein Problem (mehr) und dazu gibt es auch haufenweise code. Virtualexplorereasylistview usw. macht das übrigens auch automatisch.

Gemeint ist das Explorepopup, dass (in Abhängigkeit von der angezeigten Wurzel) aufpopt, wenn man auf eine freie Stelle des Explorers rechtsclickt. Der vielleicht deutlichste Unterschied: Es gibt den Menupunkt "Neu...". Den gibt es bei den "normalen" Datei- oder Ordner-Explorerpopups scheinbar (???) nicht (nie).

Wie kriege ich dieses Menu? Über IContexMenu(2) scheint man nur das, für Dateitypen oder Ordner zu bekommen. Das ist aber eben etwas anderes.
Und, wenn ich es kriege, wie baue ich da temporär ein eigenes Untermenu und eigene Items ein?

Gruß
Mattze

himitsu 11. Dez 2015 12:00

AW: "freies" Contextmenu des Explorers
 
Die Nicht-Dateitypbezogenen Menüs bassieren oft auf den Einstellungen von Verzeichnissen wie
HKEY_CLASSES_ROOT\callto
HKEY_CLASSES_ROOT\Folder

Oder sie werden über entsprechende Explorer-Plugins geregelt, wie z.B. bei den virtuellen ZIP- und CAP-Verzeichnissen.



Auf die Schnelle fällt mir jetzt auch nur MSDN-Library durchsuchenGetMenu ein, aber das willst'e bestimmt nicht.

Mattze 11. Dez 2015 13:44

AW: "freies" Contextmenu des Explorers
 
Hallo,

vielen Dank, aber bei den vielen Getmenus scheint das auch nicht dabei zu sein.

Ich überlege, ob ich das nicht selber basteln kann.
Momentan weiß ich nur noch nicht, wie ich das Neu-Popup zusammengestoppelt kriege.
Na, schaun mer mal...

Gruß
Mattze

Mattze 11. Dez 2015 14:16

AW: "freies" Contextmenu des Explorers
 
Hallo,

soweit es die Quellen, die ich habe, zuließen, habe ich mal beim Entwickler des UltraExplorers nachgeschaut.
Das scheint ziemlich kompliziert zu sein und ich muss leider zugeben, dass ich nicht glaube, dass mein Wissensstand ausreicht, um das ordentlich aufzubauen.
Sieht ziemlich fies aus!

Da mich zum Glück keine Termine drängeln, werde ich noch eine Weile daran rumbasteln. Aber, wie gesagt, ich glaube nicht, dass ich das hinkriege.

Gruß
Mattze

EWeiss 11. Dez 2015 15:11

AW: "freies" Contextmenu des Explorers
 
Ich denke du benötigst Informationen über das Hier im Forum suchenIContextMenu Interface.
So wie mir aber bekannt ist funktioniert das nur mit Dateien und Ordnern.
Das Komplette Explorer Contexmenu so wie man es sieht wenn du auf den Desktop Rechte Maus Taste drückst
wirst du wohl so ohne weiteres nicht in deine Anwendung implementieren können.

Zitat:

aber eben nicht dieses "freie" Menu.
Es ist nicht frei daher auch deine Probleme bei der Implementierung.

EDIT:
Für Dateien und Ordnern Ja.
Vorweg schon mal Sorry falls ich dir wieder auf die Füße getreten sein sollte.

gruss

Mattze 11. Dez 2015 15:27

AW: "freies" Contextmenu des Explorers
 
Hallo,

Du sagst es. Es ist nicht "frei" und deshalb steht es in Anführungszeichen. Mir ist nur keine bessere und kurze Umschreibung eingefallen. Und da die meisten verstehen, was gemeint ist, war es doch richtig.

Soweit ich das gesehen habe, brauche ich IContextMenu, IContextMenu2, IContextMenu3, IShellBrowser, IDataObject, TObjectWithSite...
Dazu kommen ein paar schlecht oder gar nicht dokumentierte Messages (CWM_GETISHELLBROWSER...)

Jedenfalls ist das soviel auf einmal, dass ich nur noch tief Luft holen kann.
Mit IContextMenu und IContextMenu2 habe ich, glaube ich, schon mal etwas gemacht. Aber das ist schon sooo lange her, dass ich es inzwischen völlig vergessen habe.
Mit IDataObject habe ich auch mal gespielt, als ich DnD selber ausprobieren wollte. Aber das ist auch schon wieder eine ganze Weile her...

Und ich dachte, dass das (viel) einfacher und direkter möglich ist.

Gruß
Mattze


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:09 Uhr.
Seite 1 von 2  1 2   

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf