GetAsyncKeyState - Ungültige Konvertierung

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von Mangafreak1995.

    GetAsyncKeyState - Ungültige Konvertierung

    Hallöchen,
    ich hoffe ihr könnt mir bei meinem folgendem Problem helfen:

    Und zwar, frage ich in einem Timer mit

    VB.NET-Quellcode

    1. If GetAsyncKeyState("Keys." & TasteA1.SelectedItem) Then

    ab, ob die im Programm ausgewählte Taste (TasteA1.SelectedItem) gedrückt wurde. Nur gibt er mir dafür einen Fehler, und zwar folgenden:

    Ungültige Konvertierung von der Zeichenfolge Keys.NumPad0 in Typ Long.
    Ich glaube es liegt daran, in welche Art es konvertiert wird durch folgende Deklaration:

    VB.NET-Quellcode

    1. Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Long

    Ich habe es schon mit verschiedenen Arten probiert, doch ich weiß nicht wie es gehen soll.

    Bitte um Hilfe


    .Energize

    ~blaze~ schrieb:

    Hi
    1. musst du das in Integer schreiben: Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Keys) As Integer
    2.

    VB.NET-Quellcode

    1. Dim k As Keys = DirectCast([Enum].Parse(GetType(Keys), DirectCast(TasteA1.SelectedItem, String)), Keys)


    Gruß
    ~blaze~
    Hey,

    danke dir für deine Hilfe, doch wie soll ich den Code in Schritt 2 anwenden ? Ich habe den Teil einfach mal unter die Deklaration geschrieben. Nun kriegt er den Fehler:
    Fehler beim Erstellen des Formulars. Weitere Informationen finden Sie in Exception.InnerException. Fehler: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt..


    Bitte um Hilfe !

    .Energize
    Ich habe mir den Text jetzt des öfteren durchgelesen, doch entweder verstehe ich ihn nicht der Sprache wegen oder ich
    finde nicht den Punkt an dem es erklärt wird.

    Wenn du mir auf die Sprünge helfen könntest wäre ich dir echt dankbar :)
    Ich sehe keinen Fehler in dem Code. Die "GetAsyncKeyState" Funktion hat doch nur einen Parameter und der lautet " 'keys.' & TasteA1.SelectedItem". In meinem Fall würde eine Auswahl das ergeben "Keys.NumPad0".

    Was ist daran jetzt falsch ?

    Bitte hilf mir...
    Dass das Keys.NumPad0 eigentlich nicht Keys.NumPad0 ist, sondern "Keys.NumPad0"
    Sprich: Ein String und kein Typ.
    [Enum].Parse von Blaze konvertiert diesen String in das, als was es interpretiert werden würde, wenn es in der IDE sethen würde.
    Wie gesagt: wüdre, wüdre, würde.
    De Facto kannst du auch nicht Schreiben
    Dim a As ListBox.SelectedItem
    , selbst wenn in der ListBox der Eintrag "Integer" ausgewählt wurde.
    GetAsyncKeyState Function
    lies doku. durch und versuch zu verstehen, dann weist du warum diese code nicht funz:
    habe dir alles gepostet, denken kannst selber....zum anderen findest jede menge beispiele hier in forum oder in google vb6 quellltexte, die du umschreiben muß. Bemühe dich mit suche, in google und hier in Forum. Welche parameter GetAsynckeystate übergeben muß steht schwarz auf weis in msdn, siehe link !

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „Alex2000“ ()