HILFE: keybd_event
-
Ich prgrammiere an einer Anwendung, die eine fremde Anwendung "fernsteuert". Zum markieren von Datensätzen muß ich die [Shift-Taste] drücken und dann mit [Cursor runter] die in der Liste folgenden Datensätze markieren.
Das ganze löse ich mit:
keybd_event(VK_SHIFT, 0, 0, NULL); // Shift drücken for (int i = 0 ; i < 10 ; i++) {// 10 Datensätze markieren keybd_event(VK_DOWN, 0, 0, NULL); keybd_event(VK_DOWN, 0, KEYEVENTF_KEYUP, 0); } keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0); // Shift lösen
Auf meinem Laptop ( P4, 1,2 Ghz ) funktionierts und auf mein PC (P4 1,7 Ghz) markiert der die Datensätze nicht. Die Tasten VK_DOWN kommen an, aber der gedrückte Shift nicht. Delays und PrcessMessages dazwischen hab ich schon alles ausprobiert. Es klappt nicht .......
Verzweifel ....
Ist die Kiste zu schnell, oder Windows zu langsam ?????
-
Sleep(0) zwischen den Aufrufen dürfte helfen... wenn ja, dann bin ich auch für ne Erklärung bereit (o:
-junix
-
Ein Sleep(0) und auch ein Sleep(5000) nach dem Drücken der Shift-Taste ist ihm sch....egal. Er läuft durch die Datensätze, d.h. der VK_DOWN kommt an, aber die Shift-Taste davor nicht.
Aber schon mal Thx.
-
Hallo
versuchs dochmal mit einer Schleife + Application->ProzessMessage()
MfG
Klaus
-
Alles schon probiert, Delay-Schleifen...
http://www.c-plusplus.net/forum/viewtopic.php?t=58904
-
Dann mach das so hier:
keybd_event(VK_DOWN, 0, 0, 0); keybd_event(VK_DOWN, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_UP, 0, 0, 0); keybd_event(VK_UP, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_SHIFT, 0, 0, NULL); // Shift drücken for (int i = 0 ; i < 10 ; i++) {// 10 Datensätze markieren keybd_event(VK_DOWN, 0, 0, NULL); keybd_event(VK_DOWN, 0, KEYEVENTF_KEYUP, 0); } keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0); // Shift lösen
Ist zwar umständlich, aber was soll's.