Feedback

VB - Tasten mittels ScanCodes umbelegen

Veröffentlicht von am 12/24/2006
(2 Bewertungen)
Diese Funktion kann die ScanCodes also die Tastaturbefehle umsetzen um z.B. Tasten zu vertauschen oder zu deaktivieren.
Nach der Umbelegung muss der Computer neugestartet werden damit die ScanCodes angewendet werden.

Weitere Informationen gibt es hier: http://winfaq.de/faq_html/Content/tip1575.htm
Eine Liste der ScanCodes findet man hier: http://winfaq.de/faq_html/Content/tip1576.htm

Achtung: Man sollte diese Funktion nur dann benutzen wenn man sich mit der Materie auskennt da es sonst zu Problemen kommen kann.

Hier ein Beispielaufruf wenn man die Taste "ESCAPE" mit der Taste "A" vertauschen will:
'SetScanCodes(New Byte() {&H1, &H0, &H1E, &H0}, New Byte() {&H1E, &H0, &H1, &H0})
''' <summary>
''' Diese Funktion kann die ScanCodes also die Tastaturbefehle umsetzen um z.B. Tasten zu vertauschen oder zu deaktivieren.
''' Nach der Umbelegung muss der Computer neugestartet werden damit die ScanCodes angewendet werden.
''' </summary>
''' <param name="ScanCodes">
''' Hier kann man ein oder mehrere ByteArrays angeben wobei das Array immer eine länge von 4 haben muss.
''' Die ersten 2 Einträge im Array stellt den Tastencode dar welcher mit dem alten Code ersetzt werden soll
''' und die letzten beiden Einträge im Array stellen den Tastencode dar der ersetzt werden soll.
''' Die Taste ESCAPE hat den Tastencode 0x01,0x00 und die Taste A hat den Tastencode 0x1E,0x00.
''' Wenn man nun die Taste ESCAPE und A vertausche will muss man als Parameter folgendes angeben:
''' SetScanCodes(New Byte() {0x01, 0x00, 0x1E, 0x00}, New Byte() {0x1E, 0x00, 0x01, 0x00})
''' Statt 0x muss man natürlich die Hex Formatierung von VB verwenden (hier in XML nicht darstellbar).
''' Das erste ByteArray setzt auf die ESC-Taste die A-Taste und das zweite ByteArray setzt auf die A-Taste die ESC-Taste
''' </param>
''' <remarks>
''' Weitere Informationen gibt es hier: http://winfaq.de/faq_html/Content/tip1575.htm
''' Eine Liste der ScanCodes findet man hier: http://winfaq.de/faq_html/Content/tip1576.htm
''' </remarks>
Public Sub SetScanCodes(ByVal ParamArray ScanCodes() As Object)
    'Hier noch mal das Beispiel um ESC mit A zu vertauschen:
    'SetScanCodes(New Byte() {&H1, &H0, &H1E, &H0}, New Byte() {&H1E, &H0, &H1, &H0})

    Dim CodeArray As New List(Of Byte)
    Dim CodeCount As Byte = ScanCodes.Length + 1
    CodeArray.AddRange(New Byte() {&H0, &H0, &H0, &H0}) 'Header
    CodeArray.AddRange(New Byte() {&H0, &H0, &H0, &H0}) 'Header
    CodeArray.AddRange(New Byte() {Hex(CodeCount), &H0, &H0, &H0}) 'Anzahl

    For i As Integer = 0 To ScanCodes.Length - 1
        CodeArray.AddRange(ScanCodes(i))
    Next

    CodeArray.AddRange(New Byte() {&H0, &H0, &H0, &H0}) 'Abschluss

    Microsoft.Win32.Registry.SetValue("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout", _
    "Scancode Map", CodeArray.ToArray, Microsoft.Win32.RegistryValueKind.Binary)
End Sub
Abgelegt unter ScanCode, Tasten, Tastatur.

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!