VB.NET-Tipp 0112: Getrenntes Erkennen der linken und rechten Modifizierertasten
von Kay-Ariane
Beschreibung
Dieser Tipp ermöglicht bei den Modifizierertasten (Alt, Alt Gr, Shift, Strg) festzustellen, ob die linke oder die rechte Taste auf der Tastatur gedrückt wurde. Mit VB-Bordmitteln allein lässt sich nämlich die Seite nicht feststellen. Stattdessen muss eine API-Funktion verwendet werden.
Schwierigkeitsgrad: | Framework-Version(en): .NET Framework 2.0, .NET Framework 3.0, .NET Framework 3.5 | .NET-Version(en): Visual Basic 2005, Visual Basic 2008 | Download: |
' Dieser Quellcode stammt von http://www.activevb.de ' und kann frei verwendet werden. Für eventuelle Schäden ' wird nicht gehaftet. ' Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. ' Ansonsten viel Spaß und Erfolg mit diesem Source! ' Projektversion: Visual Studio 2008 ' Option Strict: An ' Option Explicit: An ' Option Infer: An ' ' Referenzen: ' - System ' - System.Data ' - System.Deployment ' - System.Drawing ' - System.Windows.Forms ' - System.Xml ' - System.Core ' - System.Xml.Linq ' - System.Data.DataSetExtensions ' ' Imports: ' - Microsoft.VisualBasic ' - System ' - System.Collections ' - System.Collections.Generic ' - System.Data ' - System.Drawing ' - System.Diagnostics ' - System.Windows.Forms ' - System.Linq ' - System.Xml.Linq ' ' ############################################################################## ' ################################# Form1.vb ################################### ' ############################################################################## Option Explicit On Option Strict On Imports System.Windows.Forms Public Class Form1 ''' <summary> ''' API-Deklaration ''' </summary> Private Declare Function GetAsyncKeyState Lib "user32.dll" ( _ ByVal vKey As Keys) As Short Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load ' Notwendig, wenn sich Steuerelemente auf dem Form befinden Me.KeyPreview = True End Sub Private Sub Form1_KeyDown(ByVal sender As Object, _ ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown Select Case True Case GetAsyncKeyState(Keys.LShiftKey) <> 0 Me.Text = "Linke Umschalt-Taste" Case GetAsyncKeyState(Keys.RShiftKey) <> 0 Me.Text = "Rechte Umschalt-Taste" Case GetAsyncKeyState(Keys.LMenu) <> 0 Me.Text = "Linke Alt-Taste" ' Da die AltGr-Taste eine Kombination der linke Umschalt-Taste ' plus der linken Alt-Taste auslöst, muß AltGr immer vor der ' Überprüfung auf die linke Strg-Taste abgefragt werden, da ' sie andernfalls nicht korrekt erkannt wird. Die Abfrage- ' Reihenfolge aller übrigen Modifizierer-Tasten ist beliebig ' und beeinflußt nicht die korrekte Erkennung. Case GetAsyncKeyState(Keys.ControlKey) <> 0 AndAlso _ GetAsyncKeyState(Keys.RMenu) <> 0 Me.Text = "AltGr-Taste" Case GetAsyncKeyState(Keys.LControlKey) <> 0 Me.Text = "Linke Strg-Taste" Case GetAsyncKeyState(Keys.RControlKey) <> 0 Me.Text = "Rechte Strg-Taste" End Select End Sub End Class
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.