AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi "freies" Contextmenu des Explorers

"freies" Contextmenu des Explorers

Ein Thema von Mattze · begonnen am 9. Dez 2015 · letzter Beitrag vom 11. Dez 2015
Antwort Antwort
Seite 1 von 2  1 2   
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#1

"freies" Contextmenu des Explorers

  Alt 9. Dez 2015, 14:52
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
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: "freies" Contextmenu des Explorers

  Alt 9. Dez 2015, 17:25
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
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#3

AW: "freies" Contextmenu des Explorers

  Alt 9. Dez 2015, 19:50
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
40.503 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: "freies" Contextmenu des Explorers

  Alt 10. Dez 2015, 13:05
Es gab irgendwo (glaub auf Torry) mal ein Beispiel, wie man das Exploer-Kontextmenü auslesen und in ein eigenes TPopupMenu kopieren konnte.

[add]


Bei Google suchendelphi explorer menü auslesen
http://www.delphipraxis.net/79838-ex...wendung-3.html
http://entwickler-forum.de/showthrea...erken-auslesen
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list

Geändert von himitsu (10. Dez 2015 um 13:13 Uhr)
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#5

AW: "freies" Contextmenu des Explorers

  Alt 10. Dez 2015, 18:43
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
40.503 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: "freies" Contextmenu des Explorers

  Alt 11. Dez 2015, 12:00
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#7

AW: "freies" Contextmenu des Explorers

  Alt 11. Dez 2015, 13:44
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
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#8

AW: "freies" Contextmenu des Explorers

  Alt 11. Dez 2015, 14:16
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
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

AW: "freies" Contextmenu des Explorers

  Alt 11. Dez 2015, 15:11
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

Geändert von EWeiss (11. Dez 2015 um 15:14 Uhr)
  Mit Zitat antworten Zitat
Mattze

Registriert seit: 6. Jan 2005
664 Beiträge
 
#10

AW: "freies" Contextmenu des Explorers

  Alt 11. Dez 2015, 15:27
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 15:12 Uhr.
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