Einzelnen Beitrag anzeigen

CodeX

Registriert seit: 30. Okt 2004
471 Beiträge
 
Delphi 12 Athens
 
#14

AW: Explorer-Kontextmenüpunkt unsichtbar ausführen

  Alt 23. Aug 2015, 14:29
Ich sehe das simulierte Anklicken des Kontextmenüpunktes aktuell als einzige Möglichkeit, das Problem zu lösen (siehe http://www.delphipraxis.net/186253-w...gesucht-*.html).
Allerdings ist das Ergebnis per IContextMenu oder per CoShell (was ich zwischenzeitlich alternativ ausprobiert habe) ja ebenfalls unzureichend.
Solange man darüber anscheinend nicht exakt im Kontext des Explorers arbeitet, wäre der einzige andere Weg, ein Explorerfenster zu öffenen, sich durch dessen Bestandteile/Komponenten per simulierter Tastendrücke durchzuhangeln und die Aktion so auszulösen.
Das habe ich nun per EnumWindows versucht, allerdings sind die Laufwerksicons keine Windows, sodass ich nicht so recht weiß, wie man da am besten dran kommt. Alternativ kann ich den Explorer in einem neuen Prozess so öffnen, dass das gewünschte Laufwerk bereits selektiert ist:
Code:
'explorer.exe /n,/e,/select,"Z:"'
ProcessId und Fensterhandle habe ich davon anschließend auch.
Nun weiß ich nicht so recht, wie weiter. Kontextmenü öffnen und ein paar mal nach unten drücken bis "Trennen" selektiert ist und "Enter" senden? Würde gehen, wenn ich den selektierten Kontextmenüpunkt irgendwie auslesen könnte (das Kontextmenü kann ja überall anders aussehen).
Ist das möglich?
Oder kann man alternattiv eine Funktion exakt so ausführen, als hätte sie ein anderer Prozess gestartet?
Nur Delphi schafft es, einem ein Lächeln zu schenken, wenn man sich beim Schreiben von := vertippt und stattdessen ein :) erscheint.
  Mit Zitat antworten Zitat