Die Ziel-App ist in Delphi geschrieben (Win32 nicht .NET) und ist Closed-Source.Wie programmgesteuert wählen Sie einen Kontextmenüeintrag in einer anderen App?
Die Aktion, die ich aufrufen möchte, heißt Kopie, aber es gibt keine offensichtliche Tastenkombination. (Strg + Einfügen tut das Falsche und Strg + C tut nichts)
Ich kann mein Ziel HWND
finden und überreden es das Kontextmenü zu öffnen (es reagiert auf WM_RBUTTONDOWN/UP
nicht). Aus dem Menü HWND
kann ich sogar das Menü-Handle über MN_GETHMENU
erreichen und den gewünschten Menüpunkt finden. Ich weiß nur nicht, wie ich den Gegenstand "wählen" soll. Es hilft nicht, dass das Menü "modeless" ist, dh. seine HWND
ist nicht im Besitz, so dass ich nicht weiß, welche von vielen versteckten Windows ist der echte Besitzer - sonst könnte ich wahrscheinlich nur senden Sie eine WM_COMMAND
und nicht einmal Pop-up-Menü, was vorzuziehen wäre.
Obwohl ich sicher bin, dass es alle Arten von Hacks erleichtert, würde ich es vorziehen, Code nicht in den Zielprozess zu injizieren.
Antworten in jeder Sprache akzeptiert.
Ich denke, es würde einige Auswirkungen auf die Sicherheit haben, wenn so etwas möglich wäre, denn das würde bedeuten, dass man denken kann, dass sie Eingaben von der Tastatur/Maus bekommen Tatsächlich kommt es von einer anderen App! Momentan fällt mir jedoch kein konkretes Beispiel ein ... – Paggas
Wenn Sie nicht vertrauenswürdige Apps ausführen, haben Sie ohnehin schon verloren. Aber das wirft einen Punkt auf - das funktioniert auf XP ... Ich frage mich, ob es unter Vista/7 funktionieren würde? –