Kirjautuminen

Haku

Tehtävät

Koodit: VB6: GetAsyncKeyStaten käyttö

Kirjoittaja: sooda

Kirjoitettu: 31.05.2004 – 31.05.2004

Tagit: koodi näytille, vinkki

Tämä löytyy muualtakin haulla, mutta tässä on nyt kaikki samassa paketissa esimerkkien kanssa :P eli GetAsyncKeyState-apin käyttö. Tämä näkee napinpainallukset edellisen kutsun jälkeen ja onko joku tietty nappula pohjassa. Ohjelmalla ei tarvitse olla fokusta.
GetAsyncKeyState infoa: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/userinput/keyboardinput/keyboardinputreference/keyboardinputfunctions/getasynckeystate.asp
ja sen käyttämät arvot napeille: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/UserInput/VirtualKeyCodes.asp

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

Public Function NappiPohjassa(Nappi As Long)
    'jos funktion palautusarvon eniten merkitsevä bitti on päällä,
    'nappi on tällä hetkellä pohjassa
    NappiPohjassa = GetAsyncKeyState(Nappi) And &H8000

End Function

Public Function NappiPainettu(Nappi As Long)
    'jos funktion palautusarvon vähiten merkitsevä bitti on päällä,
    'nappia on painettu viime GetAsyncKeyState funkkarin kutsun jälkeen
    NappiPainettu = GetAsyncKeyState(Nappi) And 1

End Function

Private Sub Form_Load()

    Show
    NappiPainettu (&H10) 'preventtaa sen, että jos ennen ohjelman käynnistymistä on painanut
    Do
        DoEvents
        If NappiPainettu(&H10) Then Print "Paiväee!!" 'shifti moikkaa :D
        If NappiPohjassa(&H11) Then Left = Left + 1 'controlli siirtää oikealle ilman viivettä (vertaa edelliseen pitäen nappi pohjassa)
        If NappiPohjassa(&H12) Then Top = Top + 1 'altti tiputtaa
        If Left + Width > Screen.Width Then Left = 0 'reunan yli?
        If Top + Height > Screen.Height Then Top = 0 'alareunan yli?
    Loop

End Sub

Private Sub Form_Unload(Cancel As Integer)

    End 'ettei tiltata form_loadissa olevaan looppiin

End Sub

Kommentit

Bill Keltanen [31.05.2004 15:46:29]

#

Nojaa, kiva... :D

tuomas [31.05.2004 16:27:23]

#

Ihan kätevä, itse en koskaan olekkaan getasynstatea käyttää.

peki [31.05.2004 17:33:21]

#

Aika kätsy, pitää sanoo.
Hyötyä monelle!

thefox [01.06.2004 16:06:17]

#

Ihan jees, mainittakoon vielä että GetAsyncKeyState on sitten globaali siinä mielessä että ikkunalla ei tarvitse olla fokusta jotta se tietäisi mitä näppäimiä on painettu. Tämä ei siis välttämättä aina ole se järkevin ratkaisu näppäinten tarkkailuun.

miiro [25.03.2005 11:12:12]

#

ja jollain tavalla siten myös todella hyvä näppäinten tarkkailuväline, esin Ghost key loggeria tehtäessä, jonka muuten tämän avulla väsäsin.

moptim [02.08.2006 12:02:44]

#

mites sais funktionäppäimet ja escin? olen tekemässä tietokoneella pianoa :D

Kirjoita kommentti

Muista lukea kirjoitusohjeet.
Tietoa sivustosta