Autor Beitrag
maq6
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mo 25.06.07 15:38 
Hallo zusammen,

ich sitze schon seit einigen Tagen an folgendem Problem:

Ich möchte aus meinem Delphi-Programm an ein anderes Fenster die Tastenkombination 'CTRL+C' (also Kopieren) senden. Meiner Recherche zu folge gibt es zwei Möglichkeiten, SendMessage mit WM_COPY und SendMessage mit WM_KEYDOWN/WM_KEYUP. Das erste funktioniert bei Notepad einwandfrei, bei Google Earth leider nicht. Die zweite Alternative funktioniert bei beidem nicht. Ich mir wie folgt das Fenster besorgt und die Tastenbefehle abgesendet:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
rc:=Windows.FindWindow('QWidget','Google Earth');
SendMessage(rc, WM_KEYDOWN, $11,0);
SendMessage(rc, WM_KEYDOWN, $43,0);
SendMessage(rc, WM_KEYUP, $43,0);
SendMessage(rc, WM_KEYUP, $11,0);


(btw. $11 sollte der CTRL-Key sein)

Leider scheint nur der $43-Tastendruck ('C') gesendet zu werden. Mache ich hier etwas falsch? Oder liegt es evtl. daran, dass das QWidget (QT-Lib) leider nicht auf bestimmte Messages reagiert?

Hat jemand eine Idee?

Gruß
Patrick
Wonko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 69



BeitragVerfasst: Mo 25.06.07 19:32 
Vielleicht hilft Dir das weiter?
maq6 Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Di 26.06.07 08:59 
Erstmal Danke für die Antwort.

Nein, leider hilft das nicht. Ich hätte erwähnen sollen, das das Fenster nicht im Vordergrund sein darf. Daher hilft die keybd_event leider nicht, denn soweit ich weiß, muss dazu das Fenster im Vordergrund sein. Ich habe das auch schon getestet (mit Fenster im Vordergrund) und das geht. Mit SendMessage sollte es ja aber auch gehen, zumindest die einzelnen Buchstaben kommen ja an! (Komischerweise immer in Großbuchstaben).

Gruß,
Patrick