ich experimentiere gerade mit SendInput dem Win32-API (WinXPSP3 mit allen
Updates) herum und bin auf folgendes Ph�nomen gesto�en:
Versendet man mehr als 10000 Input-Strukturen an Notepad, dann werden nur
10000 Strukturen gesendet, der Rest kommentarlos "vergessen". Zur�ckgegeben
wird allerdings die volle Input-Anzahl, eine Abfrage von GetLastError d�rfte
also keine Erkenntnis bringen. Auch in der Ereignisanzeige findet sich nichts.
Teilt man die Sendung in mehrere Abschnitte zu je maximal 10000 Inputs auf,
dann muss man zwischen dem Versenden eine Pause mit Sleep() einlegen. Die
notwendige L�nge der Pause variiert bei mir zwischen 500 und 3000 ms.
Per Google habe ich noch nicht einmal herausgefunden, welcher Puffer da
�berl�uft. Die MSDN spricht von "keyboard input stream"
(<http://msdn.microsoft.com/en-us/library/ms646310(VS.85).aspx>). An anderer
Stelle existieren nur noch "message queues"
(<http://msdn.microsoft.com/en-us/library/ms646267(VS.85).aspx#_win32_Keyboard_Input_Model>).
Andere sprechen von "keyboard buffer", "event queue" und anderes.
Dementsprechend habe ich auch noch keinen Tipp gefunden, womit ich den
Overflow vermeiden/abfangen/h�ndeln kann, ohne auf das Gl�cksspiel mit Sleep()
angewiesen zu sein.
Oder fehlt mir einfach nur die richtige Erleuchtung?
viele gr��e
ralph
WaitForInputIdle statt Sleep:
(http://msdn.microsoft.com/en-us/library/ms687022(VS.85).aspx)
Gru� Uwe
Das klappt leider nicht. Ich gehe gerade mit dem Problem hausieren und darf
der Einfachheit und der Synchronizit�t halber auf einen Forumsbeitrag mit
Beispielsprogramm von mir verweisen:
http://www.coding-board.de/board/showpost.php?p=166130&postcount=3
Oder habe ich einen Programmierfehler verbockt?
viele gr��e
ralph
WaitForInputIdle(pi.hProcess,0);
Mit 0 als Wartezeit wartet es nicht und auf den
R�ckgabewert zu schauen, schadet nicht...
Gru� Uwe
Uiii! *sch�m*.
Wenn ich dann hinter WaitForInputIdle(hProcess2,INFINITE) (in der
MySendInput-Funktion) noch ein Sleep(10) einf�ge (wahrscheinlich um nochmal
einen Thread-Wechsel herbeizuf�hren), dann klappt alles wie gew�nscht.
> und auf den
> R�ckgabewert zu schauen, schadet nicht...
Womit mir zum soundsovielten Mal klargemacht wurde, dass FindWindow nach
CreateProcess trotz WaitForInputIdle noch ein Weilchen lang nichts findet. ;-)
Vielen Dank!
viele gr��e
ralph