VB .NET Keys Abfrage Tastenkombination geht nicht....

  • VB.NET
  • .NET 4.0

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

    VB .NET Keys Abfrage Tastenkombination geht nicht....

    Servus...

    ich verzweifle hier gerade an einem Code - bekomme es einfach nicht hin ihn so umzuschreiben, dass er macht was ich will.

    Wenn ich nur eine Taste abfange ist es kein Problem - drücke ich die STRG Taste - kein Problem der Code geht. Möchte ich aber abfragen ob STRG + ALT + T gedrückt / gehalten wurde, versagt der Code.
    Ich habe mir die Codefragmente aus dem Internet zusammen gebaut. Eventuell ist das ganze Konstrukt etwas daneben. Wie gesagt, eine Taste geht einwandfrei.

    Diesen Code habe ich im Klassen Kopf:

    VB.NET-Quellcode

    1. <System.Runtime.InteropServices.DllImport("user32.dll")>
    2. Private Shared Function GetAsyncKeyState(ByVal vkey As System.Windows.Forms.Keys) As Short
    3. 'Nothing
    4. End Function



    Und nun unten der eigentliche Code:

    VB.NET-Quellcode

    1. Dim key As Boolean
    2. key = GetAsyncKeyState(Keys.LShiftKey AndAlso Keys.A)
    3. If key = True Then
    4. MsgBox("SHIFT und A")
    5. End If


    Wenn ich das AndAlso Keys.A raus mache - dann geht's. Also sobald ich die Shift Taste drücke.
    Kombinationen zweier oder gar dreier Keys führen zu keinem True.

    Danke schon mal für Eure Hilfe!
    @Timestheus Fang an und mach Option Strict On, damit Du weißt, mit welchen Datentypen Du arbeiten musst: Visual Studio - Empfohlene Einstellungen
    Und dann ist das ganz einfach:

    VB.NET-Quellcode

    1. Dim shift = (GetAsyncKeyState(Keys.LShiftKey) And &H8000) <> 0
    2. Dim ctrl = (GetAsyncKeyState(Keys.LControlKey) And &H8000) <> 0
    3. If shift AndAlso ctrl Then
    4. MessageBox("Shift und Control gedrückt")
    5. End If
    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).
    VB-Fragen über PN / Konversation werden ignoriert!