AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi GetAsyncKeyState und Keybd_Event richtig verwenden
Thema durchsuchen
Ansicht
Themen-Optionen

GetAsyncKeyState und Keybd_Event richtig verwenden

Ein Thema von TheAn00bis · begonnen am 1. Apr 2007 · letzter Beitrag vom 3. Apr 2007
Antwort Antwort
TheAn00bis

Registriert seit: 7. Jun 2004
386 Beiträge
 
#1

GetAsyncKeyState und Keybd_Event richtig verwenden

  Alt 1. Apr 2007, 21:06
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:
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;
Ist unschön und aufwändig, aber es soll schnell gehen und ich hab mich noch nie mit Hooks befasst.
Allerdings wird VK_SPACE nicht einmal, sondern ca. 100mal gesendet.

Warum?
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: GetAsyncKeyState und Keybd_Event richtig verwenden

  Alt 2. Apr 2007, 01:15
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.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
TheAn00bis

Registriert seit: 7. Jun 2004
386 Beiträge
 
#3

Re: GetAsyncKeyState und Keybd_Event richtig verwenden

  Alt 3. Apr 2007, 13:29
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz