Wie programm einen Kontextmenüpunkt in einer anderen App wählen?
-
06-07-2019 - |
Frage
Das Ziel App ist in Delphi geschrieben (win32 nicht .NET) und Closed-Source.
Die Aktion, die ich aufrufen möchte, ist Copy genannt, aber es gibt keine offensichtliche Tastaturkürzel. (Strg + Einfügen tut das Falsche und Strg + C tut nichts)
Ich kann mein Ziel HWND
und überzeugen sie finden das Kontextmenü zu öffnen (reagiert es nicht WM_RBUTTONDOWN/UP
WM_CONTEXTMENU
). Aus dem Menü HWND
kann ich auch das Menü Griff über MN_GETHMENU
erhalten und den Menüpunkt Ich mag finden. Ich weiß es einfach nicht die Details, wie das Element „wählen“. Es hilft nicht, dass das Menü „modalen“, dh. seine HWND
nicht gehört, so weiß ich nicht, was von vielen versteckten TPUtilWindow
Fenster der wirkliche Besitzer ist -. sonst könnte ich es wahrscheinlich nur eine WM_COMMAND
senden und nicht einmal das Menü Pop-up, das besser wäre,
Obwohl ich bin sicher, dass es alle Arten von Hacks erleichtert, würde ich es vorziehen, nicht-Code in den Zielprozess zu injizieren.
Antworten in jeder Sprache akzeptiert.
Lösung
Anscheinend sind Sie in der Lage, es zu senden WM_RBUTTONDOWN/UP
Nachrichten und er antwortet. Wenn ja, können Sie auch WM_KEYDOWN/UP
Nachrichten senden? Solange Sie die Struktur des Menüs kennen und es ändert sich nicht, versuchen Sie die App zu sagen, dass jemand auf den Abwärtspfeil X Anzahl der Male ist drücken und dann Enter drücken. Das scheint die einfachste Lösung für mich ...