Die Community zu .NET und Classic VB.
Menü

VB.NET-Tipp 0112: Getrenntes Erkennen der linken und rechten Modifizierertasten

 von 

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:

Schwierigkeitsgrad 1

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:

Download des Beispielprojektes [11,14 KB]

' 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.