Entwickler-Ecke
Windows API - Probleme beim senden von Tastenkombinationen mit SendMessage
maq6 - Mo 25.06.07 15:38
Titel: Probleme beim senden von Tastenkombinationen mit SendMessage
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:
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
maq6 - 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
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!