Toon posts:

[vb7] Keyboard reader

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een proggie gemaakt dat op de achtergrond draaid, maar wat ik graag volledig in beeld wil zien als ik een combinatie van door mijzelf uitgekozen toetsen achter elkaar in druk. Ik moet dus iets zien te fixen dat het programma continu volgt welke toetsen er ingedrukt worden.

in vb6 ging dat heel makkelijk zo :

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Dim result As Integer

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

Private Sub Timer1_Timer()

For i = 1 To 255
result = 0
result = GetAsyncKeyState(i)

If result = -32767 Then
Text1.Text = Text1.Text + Chr(i)
End if
Next i
End Sub


Maar ik heb nog niet zo veel ervaring met vb7 dus hoe vertaal ik die derde regel nou?

Verwijderd

Ik neem aan dat het gewoon met de data types te maken heeft.
In VB6 zijn de formaten van bijvoorbeeld een long en integer anders dan in VB7

als je in de bovenstaande code, overal
Interger vervangt door Single
Long vervangt door integer
(en je i declareerd voor de volledigheid)

zou het moeten werken denk ik (niet getest)

  • -DarkShadow-
  • Registratie: December 2001
  • Niet online
vb7 = vb.net?

Specialist in:
Soldeerstations
Oscilloscoop


Verwijderd

Topicstarter
Verwijderd schreef op 23 december 2002 @ 17:27:
Ik neem aan dat het gewoon met de data types te maken heeft.
In VB6 zijn de formaten van bijvoorbeeld een long en integer anders dan in VB7

als je in de bovenstaande code, overal
Interger vervangt door Single
Long vervangt door integer
(en je i declareerd voor de volledigheid)

zou het moeten werken denk ik (niet getest)
ok, zo dan

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Dim result %
dim i %

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

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

  For i = 1 To 255
    result = 0
    result = GetAsyncKeyState(i)

    If result = -32767 Then
      Text1.Text = Text1.Text + Chr(i)
    End if
  Next i

End Sub


nogmaals het gaat dus om regel 3

Verwijderd

je hebt nix verandert aan de API ... :s

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Dim result As Single
dim i as Integer

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Integer) As Single
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

  For i = 1 To 255
    result = 0
    result = GetAsyncKeyState(i)

    If result = -32767 Then
      Text1.Text = Text1.Text + Chr(i)
    End if
  Next i

End Sub