Global Hotkey, prüfen ob Shift gehalten wird

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Rootbob91.

    Global Hotkey, prüfen ob Shift gehalten wird

    Hallo,

    mit folgendem Code möchte ich gucken ob Shift gehalten wird (halt wenn Keydown ausgelöst wird, dann Bool auf True, bei Keyup wieder auf False)

    VB.NET-Quellcode

    1. Private Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As IntPtr, ByVal id As Integer, ByVal fsModifier As KeyModifier, ByVal vk As Integer) As Integer
    2. Private IsPressed As Boolean = False
    3. Protected Overrides Sub WndProc(ByRef m As Message)
    4. If m.Msg = WM_KEYDOWN Then
    5. If m.WParam = 0 Then IsPressed = True
    6. ElseIf m.Msg = WM_KEYUP Then
    7. If m.WParam = 1 Then IsPressed = False
    8. End If
    9. MyBase.WndProc(m)
    10. End Sub
    11. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    12. RegisterHotKey(Me.Handle, 0, KeyModifier.None, Keys.LShiftKey)
    13. RegisterHotKey(Me.Handle, 1, KeyModifier.None, Keys.LShiftKey)
    14. End Sub


    Es klappt allerdings nicht, er erkennt das Keyup & Down nicht.
    Polling is trolling!

    Achtung: Ich habe die komische Angewohnheit, simple Dinge zu verkomplizieren..

    Rootbob91 schrieb:

    ob Shift gehalten wird
    machst Du mit

    VB.NET-Quellcode

    1. <DllImport("user32.dll")> _
    2. Private Shared Function GetAsyncKeyState(ByVal vKey As Int32) As Int16
    3. End Function
    4. ' ...
    5. Dim b1 As Boolean = ((GetAsyncKeyState(VK_SHIFT) And &H8000) <> 0) ' True = gedrückt
    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!