Seite 1 von 1

GetAsyncKeyState_(#VK_TAB)

Verfasst: 11.04.2007 17:09
von DerProgrammierer78
Habe da wieder mal ein Problem ... wie könnte es auch anders sein ... :lol:

Ich würde gerne abfragen ob die TAB-Taste schon länger gedrückt ist?

Ich habe es so gelöst:

Code: Alles auswählen

If GetAsyncKeyState_(#VK_TAB) & $80000001 
  If keytab.l = 0
    keytab.l = 1
    AddGadgetItem(editorid, -1, "Drücke Taste (Tab)") 
    zeitpunkta.l = GetTickCount_() 
  EndIf
Else
  If keytab.l = 1
    AddGadgetItem(editorid, -1, "Ende Taste (Tab)") 
    keytab.l = 0
    zeitpunktb.l = GetTickCount_()
    dauer.l = zeitpunktb - zeitpunkta
    AddGadgetItem(editorid, -1, "Die Taste wurde für " + str(dauer) + "ms gedrückt")
  EndIf  
EndIf 
Aber das klappt nicht ... der zeigt dann nicht an dass die z.B. 2s lang gedrückt wurde, sondern ganz viele male wenige ms.

Das Gleiche gilt für die Maustasten, wenn ich diese über GetAsyncKeyState_(#VK_LBUTTON) abfrage. Was mache ich falsch ???

Bei den Tasten A-Z klappt das so prima ...

Verfasst: 12.05.2007 13:04
von PureBasic4.0
Bin mal auf die Suche nach Unbeantworteten Beiträgen gegangen und bin auf deinen Thread gestoßen. Falls du den Code nicht mehr brauchst, ist es auch egal.

Code: Alles auswählen

Repeat
  If GetAsyncKeyState_(#VK_TAB)
    StartTime = ElapsedMilliseconds()
    Repeat
    Until Not GetAsyncKeyState_(#VK_TAB)
    EndTime = ElapsedMilliseconds() - StartTime ; EndTime gibt die Millisekunden zurück
    Debug EndTime
  EndIf
Until GetAsyncKeyState_(#VK_ESCAPE)

Verfasst: 12.05.2007 14:59
von AND51
@ PB 4.0

So ist es besser und schont mehr die CPU !

Code: Alles auswählen

Repeat
     If GeAsyncKeyState_(#VK_TAB)
          StartTime=ElapsedMilliseconds()
          While GetAsyncKeyState_(#VK_TAB)
               Delay(0)
          Wend
          EndTime=ElapsedMilliseconds()-StartTime ; EndTime gibt die Millisekunden zurück
          Debug EndTime
     EndIf
Until GetAsyncKeyState_(#VK_ESCAPE)
Tipp: Nimm While statt Repeat, dann sparst du dir das Not :wink: