NumLock per VBA kontrollieren

.. das wohl mächtigste Werkzeug in Bill Gates' Büro-Sippe. Ob reine Formeln, PowerQuery oder VBA. Hier bleiben kaum Wünsche unerfüllt.
Benutzeravatar
d'r Bastler
Beiträge: 683
Registriert: 29. Aug 2022, 13:20
Hat sich bedankt: 177 Mal
Danksagung erhalten: 91 Mal

NumLock per VBA kontrollieren

#1

Beitrag von d'r Bastler »

Moin allerseits,

vor einigen Tagen habe ich eine aktualisierte Version meiner Sudoku-Spielerei hier veröffentlicht. Darin gibt es ein Problem, das es eigentlich nicht geben dürfte: Irgendeine meiner Prozeduren, Aufrufe, was auch immer schaltet meinen Ziffernblock, den NumLock aus. Die Ursache konnte ich auch mit gründlicher Suche nicht finden. Also hatte ich in der alten Version eine sehr aufwändige Routine, die das verhindert. Schließlich ist XL eine Tabellenkalkulation, die mit Zahlen arbeitet.

Hier nun (mal wieder als Spickzettel) ein deutlich schlankere Version zur Kontrolle des NumLocks. Der Code in ein Allg. Modul, der Aufruf von beliebiger Stelle.

Code: Alles auswählen

Option Explicit
Private Const VK_NUMLOCK = &H90
Private Const KEYEVENTF_EXTENDEDKEY = &H1
Private Const KEYEVENTF_KEYUP = &H2
Private Declare Sub keybd_event Lib "user32" ( _
     ByVal bVk As Byte, _
     ByVal bScan As Byte, _
     ByVal dwflags As Long, _
     ByVal dwExtraInfo As Long)
Private Declare Function GetKeyboardState Lib "user32" (pbKeyState As Byte) As Long
Private Declare Function SetKeyboardState Lib "user32" (lppbKeyState As Byte) As Long
 
Function SetNumLock(bStatus As Boolean) As Boolean
Dim bKey As Byte, bKeyTable(0 To 255) As Byte
Dim isNumLock As Boolean
 
bKey = GetKeyboardState(bKeyTable(0))
isNumLock = (bKeyTable(VK_NUMLOCK) <> 0)
 
If (bStatus And Not isNumLock) Or (Not bStatus And isNumLock) Then
     keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
     keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
 End If
   
End Function

Sub KeyOn()
    SetNumLock True
End Sub
Viel Spaß damit und beste Grüße!
Folgende Benutzer bedankten sich beim Autor d'r Bastler für den Beitrag:
thowe
d'r Bastler von den VBAsteleien.de
Win 10 + Office 2019 & Win11 + Office 2021 + Visio 2019 pro & macOS.X15 + Office2019pro & Android12 & XL365

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste