Jag är inte en Visual Basic-programmerare men jag tänkte försöka mig på att fånga tangentbordshändelser, eftersom att det vore roligt att göra ett spel i något annat än Java. Men det går inte speciellt bra, jag läste en guide på nätet och försökte lära mig, men kompilatorn säger "PInvokeStackImbalance", som är något fel med minneshanteringen antar jag. Jag har försökt att bygga om koden, men lyckas inte komma runt detta. PInvokeStackImbalance betyder att du har deklarerat din P/Invoke funktion med fel parametrar. Tackar :) Det fungerar, dock inte som jag vill, men jag anade att detta måste kopplas till ett specifikt objekt, verkar dock inte fungera med textboxar eller bilder, måste man skriva en klass för det objektet som skall utföra något?Fånga tangentbordshändelser
Min kod:
Public Class Form1
Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey as Long) As Integer
Private Sub Form1_Load(byVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim vbKeyDown As Keys
Dim btnDown As Boolean
btnDown = GetAsyncKeyState(vbKeyDown)
If btnDown = True THen
MsgBox("Fungerar")
Else
MsgBox("Inget är nedtryckt.")
End If
End Sub
End Class
Jag använder Visual Basic 2005 Express Edition.
Jag skulle uppskatta om någon förklarade vad som är fel och gärna hur jag förebygger detta. :)Sv: Fånga tangentbordshändelser
Enklast slipper du runt det hela genom att surfa till www.pinvoke.net och söka efter funktionen du behöver
http://www.pinvoke.net/search.aspx?search=GetAsyncKeyState&namespace=[All]
I detta fallet så har du både returvärdet och parametern fel (Integer = 32bit, Long = 64bit)Sv:Fånga tangentbordshändelser