2009-06-01 17 views
0

Im mit:Simulieren halten Sie einen Schlüssel

keybd_event(0x41, 0, 0, 0); 

0x41 ist ein 'a'. Aber das druckt nur ein "a" auf den Bildschirm. Ich brauche es halten den Schlüssel. Und wenn ich rufe

keybd_event(0x41, 0, KEYEVENTF_KEYUP, 0); 

muss es den Schlüssel freigeben.

Ist das möglich?

+0

versuchen Sie, den Benutzer zu simulieren, der die Taste 'A' gedrückt hält, um aaaa ... zu erhalten? –

+0

Sie könnten einen Timer oder eine Schleife verwenden, um keybd_event kontinuierlich aufzurufen. Oder, wenn Sie wissen, auf welcher Hardware Sie sich befinden, könnten Sie Tastenanschläge in den kb-Puffer pumpen. –

+0

Ja das ist was ich meinte. – JustFogMaxi

Antwort

0

Was möchten Sie erreichen? Die Tasten, die gedrückt bleiben sollen, sollten dies bereits mit Ihrer ersten Zeile tun.

Here's die Dokumentation für keybd_event(). Vielleicht wird es helfen, Ihre Frage zu beantworten. (Und vielleicht brauchen Sie die GetKeyboardState() -Methode?)

Wenn Sie einfach versuchen, eine Taste wiederholt zu schlagen, wäre es einfacher, um den ersten Anruf herumzulaufen, als zu versuchen, das System automatisch zu wiederholen. Sie können die richtige Verzögerung finden, die in den Systeminformations-API-Funktionen verwandt wird.

+0

Hm, ok. Nun, ich hoffte, ich könnte es tun würde eine Schleife/Timer. Aber ich denke, das wird den Trick machen. – JustFogMaxi

+0

* das ist ohne – JustFogMaxi

1

Sie können den Anruf keybd_event durch SendInput ersetzen. Sie können so viele Tastenanschlagsereignisse einfügen, wie das Ereignissystem zulässt. Die Funktion gibt die Anzahl der erfolgreich eingefügten Ereignisse zurück.

Verwandte Themen