Tastendruck an das nicht vorne liegende Windows
-
Hallo zusammen,
und zwar meine Frage ist, ob ich einen simulierten Tastendruck an ein Windows schicken kann, dass 1. mir nicht gehört 2. hinten liegt. Zum Beispiel an den Firefox.
Man hat ja folgende Möglichkeit Tastendruck zu simulieren:
SendMessage(hwnd, WM_KEYDOWN,VK_DELETE, 1L);oder
keybd_event(49,0,KEYEVENTF_KEYUP,0);wobei ich mir denke, dass man ja beim ersten einen Tastendruck auch an hintenliegende Windwos schicken könnte, oder?
mfg supersass1
-
Ein fremdes Windows gehört zu einem fremden Prozess. In einen solchen kann man
nur einreifen, wenn man das Programm dazu selbst geschrieben hat und die
Technik des globalen Datenaustausches zwischen Prozessen beherrscht. Sorry,
geht wohl nicht!
-
hola
wenn du die fremde anwendung kurz in den vordergrund bringst, dann kannst du einen tastendruck in verwendung mit AttachThreadInput simulieren.
Meep Meep
-
Meep Meep schrieb:
hola
wenn du die fremde anwendung kurz in den vordergrund bringst, dann kannst du einen tastendruck in verwendung mit AttachThreadInput simulieren.
Meep Meep
Du meinst quasi für den Bruchteil einer Sekunde das Window nach vorne holen.
Und dann den Klick simulieren.Wozu dient genau:
AttachThreadInput?
mfg supersass1
//Edit
ich glaube das erledigt sich,
http://www.microsoft.com/germany/msdn/library/visualtools/vb6/FensterInDenDesktopVordergrundBringen.mspx?mfr=true
-
In der MSDN heißt es:
Um dieses Problem zu umgehen, können Sie sich der API Funktion AttachThreadInput bedienen, die Ihnen Zugriff auf die Eingabeverarbeitung eines anderen Threads bietet. Haben Sie diesen Zugriff erhalten, können Sie auch unter den neueren Windows-Versionen mit SetForegroundWindow wie erwartet arbeiten:
Heißt das, ich kann mit
AttachThreadInputTastatureingaben an das geAttachThreadInputete-Fenster schicken, wenn ich die ID aus lese und dessen Handle?
Oder was bringt mir diese AttachThreadInput()?
Davor heißt es in der MSDN
Um ein Anwendungsfenster als aktives Fenster in den Vordergrund des Desktops zu bringen, ist die API Funktion SetForegroundWindow vorgesehen. Unter Windows 98, Windows Me und Windows 2000 jedoch reagiert diese Funktion anders als unter Windows 95 und Windows NT 4.0: Die neueren Windows-Versionen bringen ein Fenster nicht mehr in den Vordergrund des Desktops. Sie lassen stattdessen die Titelzeile des betroffenen Fensters (inklusive des entsprechenden Eintrags in der Taskleiste, sofern der aufrufende Thread der Vordergrund-Thread ist) blinken, um den Benutzer auf sich aufmerksam zu machen.
Gilt dies auch für WinXP? Oder basiert WinXP auf NT4.0?
Ich benutze WinXP, und habe schon oft ein blinkendes Fenster gesehen, man denke an ICQ/Trillian,...
Doch benutze ich die Funktion SetForegroundWindow ein paar Sekunden verspätet, und tippe zu der Zeit in ein Editfeld, so wird das Fester (welches nich im Zusammenhang mit dem Editfeld steht) nicht bklinkend dargestellt, sondern gleich in den Vordergrund geholt.
Doch der MSDN-Artikel sagt ja was anderes: http://www.microsoft.com/germany/msdn/library/visualtools/vb6/FensterInDenDesktopVordergrundBringen.mspx?mfr=truemfg supersass1