Was ist an diesem Code falsch??

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Was ist an diesem Code falsch??

    Ich weiß nicht wieso aber das Programm sollte eig nur den Text senden wenn ich NumPad 0 drücke aber er sendet trotzdem die ganze Zeit t + textbox1 inhalt + enter. ?(
    Aber wenn ich die 2 if anfragen + else entferne funktioniert es ;(

    VB.NET-Quellcode

    1. ​If CheckBox1.Checked Then
    2. Dim hotkey As Boolean
    3. hotkey = GetAsyncKeyState(Keys.NumPad0)
    4. If hotkey = True Then
    5. If TextBox1.Text = "/TIME/" Then Call Zeit()
    6. If TextBox1.Text = "/DATE/" Then Call Datum()
    7. Else
    8. My.Computer.Keyboard.SendKeys("{t}")
    9. My.Computer.Keyboard.SendKeys(TextBox1.Text)
    10. My.Computer.Keyboard.SendKeys("{enter}")
    11. End If
    12. End If
    Na klar sendet er immer. Wenn hotkey = False, dann wird gesendet. Ich gehe davon aus, dass hotkey gleich True, wenn NumPad0 gedrückt ist. Folglich Ist hotkey gleich False wenn die Taste nicht gedrückt ist. Jetzt muss man nur noch 1 und 1 zusammenzählen -> Else-Zweig wird bei hotkey gleich False ausgeführt -> wenn Taste nicht gedrückt ist.

    Jedoch bezweifle ich, dass GetAsyncKeyState einen Boolean zurückgibt.
    Müsste doch eher sowas sein: 0 <> (GetAsyncKeyState(CInt(vKey)) And &H8000)
    Und das bei folgender GetAsyncKeyState-Deklaration:

    VB.NET-Quellcode

    1. <DllImport("user32.dll")> _
    2. Public Shared Function GetAsyncKeyState(ByVal vKey As System.Windows.Forms.Keys) As Short
    3. End Function



    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    GetAsyncKeyState gibt in der Tat keinen Boolean zurück, also mach mal Option Strict On. Die Rückgabewerte wären 0, wenn nicht gedrückt wurde/ist, 1 wenn seit der letzen abfrage gedrückt würde und Short.MaxValue wenn aktuell gedrückt.
    Warum

    meikmenzel schrieb:

    GetAsyncKeyState()
    Warum nicht das KeyDown-Event der Form / des Controls?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!