Tastenkombinationen abfangen
- VB.NET
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 25 Antworten in diesem Thema. Der letzte Beitrag () ist von Jonas Jelonek.
-
-
-
-
Editiert
Gucke mal hier: [VB.NET] Systemweiten Hotkey registrieren (kein Tastatur Hook) -
-
-
Hallo,
@programmer71:: So nutzt man GetAsyncKeyState und nicht im KeyDown Event:
VB.NET-Quellcode
- Imports System.Runtime.InteropServices
- Public Class Form1
- Private WithEvents t As New Timer
- <DllImport("user32.dll")> _
- Public Shared Function GetAsyncKeyState(ByVal vKey As System.Windows.Forms.Keys) As Short
- End Function
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- t.Interval = 10
- t.Start()
- End Sub
- Private Sub t_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles t.Tick
- If GetAsyncKeyState(Keys.A) = -32767 Then
- Console.Beep()
- End If
- End Sub
- End Class
mfG
Derfuhr -
@Derfuhr
Auch nicht ganz richtig .
GetAsyncKeyState kann drei Werte zurückgeben: Short.MinValue (=-32767), 1 und 0. Ersteres bedeutet, dass die Taste gerade gedrückt wird, zweites, dass die Taste seit dem letzten Aufruf gedrückt wurde. Also wäre die absolut saubere Lösung:
-
-
-
-
VB.NET-Quellcode
- <DllImport("user32.dll")> _
- Public Shared Function GetAsyncKeyState(ByVal vKey As System.Windows.Forms.Keys) As Short
- End Function
- Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
- If GetAsyncKeyState(Keys.Control) = -32767 & GetAsyncKeyState(Keys.D1) = -32767 Then
- MessageBox.Show("Strg+1")
- End If
- End Sub
-
-
-
Machs so, wenn die Form den Fokus hat:
und so, wenn die Form den Fokus nicht hat:
VB.NET-Quellcode
- Public Class Form1
- Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Integer) As Integer
- Dim AsciiCode As Integer
- Dim Key As Integer
- Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
- If My.Computer.Keyboard.CtrlKeyDown = True Then
- For i = 1 To 255
- Key = GetAsyncKeyState(i)
- If Key = -32767 And i = 49 Then 'Taste 1 = 49; Taste 2 = 50 usw.
- MessageBox.Show("Die Tastenkombination ""Strg + 1"" wurde gedrückt!", "Hinweis", MessageBoxButtons.OK, MessageBoxIcon.Information)
- End If
- Next
- End If
- End Sub
- End Class
-
Das Geht
VB.NET-Quellcode
- Option Strict On
- Public Class Form1
- Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Integer) As Short
- Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
- If My.Computer.Keyboard.CtrlKeyDown = True And GetAsyncKeyState(Keys.F1) = -32767 Then
- MessageBox.Show("STRG und F1 wurde gedrückt")
- End If
- End Sub
- End Class
-
-
-
-
-
Ähnliche Themen
-
String ausgeben durch Tastenkombination
NoobInParadise - - Sonstige Problemstellungen -
slideHD - - Sonstige Problemstellungen