![]() |
Kontextmenü einer anderen Anwendung aufrufen
Nabend allerseits,
In einem Programm erscheint ein Kontextmenü, wenn man innerhalb eines bestimmten Fensters im Programm rechts klickt. Dann kann man verschiedenes auswählen, unter anderem "alles markieren". Dies möchte ich gerne durch ein Delphi-Programm erledigen lassen. Kann mir jemand einen Tipp geben, wie man das macht? (Wie man das andere Programm aufruft usw, weiß ich. Es geht mir nur darum, wie man auf das Kontextmenü des Programms zugreift und dort was auswählt) Gruß, |
Re: Kontextmenü einer anderen Anwendung aufrufen
Sende dem Fenster doch nen Rechtsklick.
|
Re: Kontextmenü einer anderen Anwendung aufrufen
Hallo mkinzler,
danke für die schnelle Antwort. Hört sich jetzt blöd an, aber wie sende ich dem Fenster ein Rechtsklick? Was mir aber noch schleierhafter ist: Wie kann ich dann aus dem Kontextmenü etwas auswählen? Gruß, |
Re: Kontextmenü einer anderen Anwendung aufrufen
N'Abend nezumi,
wenn es z.B. um sowas wie "Alles markieren" geht, würde ich den Tastaturbefehl STRG+A senden (ist einfacher)... Oder geht es Dir darum, wie das allgemein geht? Grüsse ...Doc |
Re: Kontextmenü einer anderen Anwendung aufrufen
Hallo DocE,
Gute Idee, wenn ich es anders nicht hinbekomme, werde ich es so versuchen. Das Problem ist nur, dass mir mit Strg+A viel zu viel markiert wird. Wenn ich rechts klicke und dann "alles markieren" auswähle, markiert er mir genau das was ich haben will. (Außerdem würde ich auch gerne mal kapieren, wie das grundsätzlich geht...) Gruß, |
Re: Kontextmenü einer anderen Anwendung aufrufen
Gibt es für "Alles markieren" im Kontextmenü auch einen Shortcut?
|
Re: Kontextmenü einer anderen Anwendung aufrufen
Zitat:
|
Re: Kontextmenü einer anderen Anwendung aufrufen
Hi all,
da das scheinbar schwierig ist mit dem Kontextmenü (habs die halbe Nacht erfolglos versucht), wollte ich es so machen, dass einfach alles markiert wird. Aber auch das klappt nicht. Um dem Fehler auf den Grund zu gehen, habe ich ein einfaches Prog geschrieben, welches in ein geöffnetes Notepad die Buchstaben "ABC" reinschreibt und dann alles markiert.
Delphi-Quellcode:
Das Reinschreiben der Buchstaben klappt, aber markiert wird nichts. Was mach ich falsch? Wie sendet man ein "Strg+A" an eine andere Anwendung?procedure TForm1.Button6Click(Sender: TObject); var wnd, wnd2 : HWND; i : Integer; s : string; begin wnd := FindWindow('notepad',nil); if wnd <> 0 then begin wnd2 := FindWindowEx(wnd,0,'Edit',nil); s := 'ABC'; For i := 1 to Length(s) do begin SendMessage(wnd2, WM_CHAR, Word(s[i]), 0) end; BringWindowToTop(wnd); SendMessage(wnd2, WM_KEYDOWN, VK_CONTROL , 0); SendMessage(wnd2, WM_KEYDOWN, Ord('A'), 0); SendMessage(wnd2, WM_KEYUP, Ord('A'), 0); SendMessage(wnd2, WM_KEYUP, VK_CONTROL, 0); end; end; Gruß, |
Re: Kontextmenü einer anderen Anwendung aufrufen
Zitat:
2. Du mußt die Applikation erst aktivieren 3. Dann mit Sendkeys (STRG+A) den ganzen Text auswählen. gruß |
Re: Kontextmenü einer anderen Anwendung aufrufen
Hallo Emil,
vielen Dank für Deine Antwort. Leider versteh ich nur Bahnhof... Könntest Du das bitte etwas genauer beschreiben oder vielleicht ein Code-Beispiel schreiben (insbes. zu Punkt 2 und 3)? Würde mir sehr helfen... Thanx, |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz