Hotkeys in VB

  • VB.NET

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

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Integer) As Short
    4. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
    5. If CBool(CShort(My.Computer.Keyboard.CtrlKeyDown = True) And CShort(GetAsyncKeyState(Keys.F2) = -32767)) Then
    6. MessageBox.Show("STRG und F4 wurde gedrückt")
    7. End If
    8. 'oder
    9. If CBool(GetAsyncKeyState(Keys.A)) AndAlso CBool(CBool(GetAsyncKeyState(Keys.B)) AndAlso CBool(GetAsyncKeyState(Keys.C))) Then
    10. MsgBox("Gedrückt")
    11. End If
    12. End Sub
    13. End Class
    Ich würde es nicht mit einem Timer lösen sondern KeyPreview der Form auf True setzen und das KeyDown Event abfragen:

    VB.NET-Quellcode

    1. 'Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Integer) As Short
    2. Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
    3. If e.Control AndAlso e.KeyCode = Keys.F4 Then
    4. MessageBox.Show("STRG und F4 wurde gedrückt")
    5. End If
    6. End Sub


    lg

    EDIT: Hierbei wir GetAsyncKeyState nicht mehr benötigt

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    Hi
    nein, bitte nicht über GetAsyncKeyState - immernoch nicht. Wenn's nicht global sein soll, das von fichz ohne die nicht benötigte GetAsyncKeyState-Deklaration. Wenn's global sein soll:
    [VB.NET] Systemweiten Hotkey registrieren (kein Tastatur Hook)
    Da befindet sich auch ein Code von mir, der das System weiter vereinfacht/automatisiert.

    Gruß
    ~blaze~
    So nun nochmal!
    Gebt eurer Form KeyPreview = True und macht es über KeyDown. Mit GetAsyncKeyState (was APi ist) geht es zwar auch, aber dann bitte nicht in nem Timer. Und dann schon garnicht ein Windows.Forms.Timer.

    @TVX
    Polling, das ständige Abfragen von Änderungen ist tabu. Das ist absolut unperformant. Es gibt für fast alles ein Event.
    Oder macht's mit dem was gepostet wurde von @~blaze~
    Das ist ebenfalls einer der richtigen Wege.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!: