nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

Win32 SendInput Overflow

Von: Ralph 'rkhb' Bauer (rkhbng@gmx.net) [Profil]
Datum: 06.07.2009 12:07
Message-ID: <h2sici$ubq$00$1@news.t-online.com>
Newsgroup: de.comp.os.ms-windows.programmer
Hallo,

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_Mo
del>).
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


[ Auf dieses Posting antworten ]

Antworten