![]() |
GetAsyncKeyState und Keybd_Event richtig verwenden
Hey,
[verdammter Browser, musste das zwei mal schreiben - grrrr...] ich möchte immer wenn die CTRL-Taste gedrückt wird die Leertaste virtuell drücken. Dazu verwende ich momentan folgenden Code:
Delphi-Quellcode:
Ist unschön und aufwändig, aber es soll schnell gehen und ich hab mich noch nie mit Hooks befasst.
procedure TForm1.Button1Click(Sender: TObject);
begin if enabled then enabled := false else enabled := true; while enabled do begin if (GetAsyncKeyState(VK_CONTROL) and $8000) <> 0 then Keybd_Event(VK_SPACE,0,0,0); Application.ProcessMessages; end end; Allerdings wird VK_SPACE nicht einmal, sondern ca. 100mal gesendet. Warum? |
Re: GetAsyncKeyState und Keybd_Event richtig verwenden
Hallo,
ich habe mal deinen Code getestet das kürzeste was ich geschafft habe war das VK_SPACE 15 mal betätigt wurde. Die Schleife läuft eben so schnell, dass man die CTRL-Taste gar nicht so schnell loslassen kann. Wenn man CTRL- ein paar Sekunden lang gedrückt hält, wird VK_SPACE gleich mehrere tausend mal gesendet. |
Re: GetAsyncKeyState und Keybd_Event richtig verwenden
Danke, ich hätte mir die Dokumentation zu "GetAsyncKeyState" richtig durchlesen müssen.
Gut, dann werde ich das entweder dahingehend ändern, dass nur alle x-Loops abgefragt wird, ob die Taste gedrückt wurde, oder doch auf einen Hook umsteigen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz