Public Class Form1
Private Declare Function GetASyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Dim asciicode As Integer
Dim Eingabe As Integer
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
For i = 1 To 255
Eingabe = GetASyncKeyState(i)
Next
End Sub
End Class
bei Eingabe = GetASyncKeyState(i) kommt immer die meldung Der Einstiegspunkt "GetASyncKeyState" wurde nicht in der DLL "user32" gefunden.
Du kannst der Funktion (afaik) keine Integer-Werte übergeben (deine Schleife bringt sowieso nicht viel - warum sollte man überprüfen ob 255 verschiedene Zeichen gedrückt wurden?). vKey ist ein 2-stelliger Hexadezimal-Wert (in VB kennzeichnet man solche mit einem &H davor). Außerdem musst du bei der DLL den vollständigen Namen angeben (also "user32.dll").
Spoiler:
Code:
' Declarations and such needed for the example:
' (Copy them to the (declarations) section of a module.)
Public Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal vKey As Long) As Integer
' Determine whether the Q key has been pressed or not since the last
' call to the function (assuming this example code has already been run earlier).
' The code runs when button Command1 is pressed.
Private Sub Command1_Click()
Dim keystate As Integer ' state of the Q key
' Get the state of the Q key as returned by the function.
' (vbKeyQ is a VB-defined constant for Q's virtual-key code)
keystate = GetAsyncKeyState(vbKeyQ)
' Check the &H8000 bit of the return value.
If keystate And &H8000 Then
Debug.Print "The Q key has been pressed since the last check."
Else
Debug.Print "The Q key has not been pressed since the last check."
End If
End Sub
Folgende User haben sich für den guten Beitrag bedankt:
Du kannst der Funktion (afaik) keine Integer-Werte übergeben
vKey ist ein 2-stelliger Hexadezimal-Wert
kannst du mir zeigen was du damit meinst also was anders muss?
22.07.2010, 17:21
pixelflat
Hast du dir den Link angeschaut und gelesen was die Funktion überhaupt macht? Unten auf der Seite ist auch nochmal ein Beispiel.
Vielleicht kannst du auch tatsächlich Integer-Werte benutzen (weil 16^2 gerade 256 entspricht). Wenn dem so ist machst du mit deinem Code folgendes: du überprüfst ob die Taste, die der Zahl 1 entspricht, gedrückt wurde (oder aktuell gehalten wird). Danach verwirfst du das Ergebnis und überprüfst ob die Taste, die der Zahl 2 entspricht, gedrückt wurde. Dann verwirfst du wieder das Ergebnis und schaust ob die Taste die der Zahl 3 zugewiesen ist gedrückt wurde... und so weiter bis 255. Im Endeffekt also völlig nutzlos.
Edit: Richtig ausgedrückt: du überprüfst gar nichts sondern weist der Variable "Eingabe" nur einen Wert zu, den du dann sofort wieder überschreibst.
Was hast du überhaupt vor? Deine Variable "Eingabe" deutet darauf hin, dass du einen Text einlesen willst?
22.07.2010, 18:42
Threadersteller
douro
stimmt das hab ich ein bissl umdeutlich gezeigt. das da oben ist ein teil eines programmes das ich schreibe. bevor es verwurfen wird, wirds abgesichert. und das ganze trägt dazu bei was das programm machen soll, nehmlich weil mein word sich immer aufhängt und ich nicht immer neuanfangen will. ja ich könnte ein anderes programm nehmen will ich aber wegen ner anderen geschichte nicht.
aber nochmal: kannst du mir anhand dieses codes zeigen (ignorier einfach das sinnlose) warum da dieser fehler kommt? ja ich hab mir dein link angeguckt.
22.07.2010, 19:18
pixelflat
Schon mit "user32.dll" versucht?
Office bietet übrigens seit geraumer Zeit die Möglichkeit Dateien automatisch alle x Minuten zu sichern.
22.07.2010, 19:27
Threadersteller
douro
hab ich hat nichts geändert
22.07.2010, 19:33
pixelflat
Die Funktion heißt Get_Async_Key_State und nicht Get_A_Sync_Key_State.
Folgende User haben sich für den guten Beitrag bedankt: