Hat jemand eine Ahnung, ob man das OnKey-Ereignis auch für die Tasten des numerischen Tastenblocks der Tastatur hinbekommt?
Vielen Dank im Voraus.
Sonnige Grüße,
Carsten
Hat jemand eine Ahnung, ob man das OnKey-Ereignis auch für die Tasten des numerischen Tastenblocks der Tastatur hinbekommt?
Vielen Dank im Voraus.
Sonnige Grüße,
Carsten
Schau mal im Archiv nach, da steht sowas drin, weiß auch net ganau wo.
Gruß
F.
Hier isses!
Gruß
F.
Carsten
Die folgenden Routinen setzen oder ermitteln den Status der Tasten
Numlock, Capslock und Scroll-Lock:
Private Declare Function GetKeyboardState Lib "user32" _
(pbKeyState As Byte) As LongPrivate Declare Function GetKeyState Lib "user32" _
(ByVal nVirtKey As Long) As IntegerPrivate Declare Function GetVersionEx Lib "kernel32" _
Alias "GetVersionExA" (lpVersionInformation As _
OSVERSIONINFO) As LongPrivate 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 SetKeyboardState Lib "user32" _
(lppbKeyState As Byte) As LongPrivate Const VER_PLATFORM_WIN32_NT = 2
Private Const VER_PLATFORM_WIN32_WINDOWS = 1
Private Const KEYEVENTF_EXTENDEDKEY = &H1
Private Const KEYEVENTF_KEYUP = &H2
Private Const VK_CAPS = &H14
Private Const VK_NUM = &H90
Private Const VK_SCROLL = &H91Private keys(0 To 255) As BytePrivate Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End TypePrivate oSv As OSVERSIONINFOPrivate Function KeyStatus(Taste) As Boolean
Dim bInsertKeyState As Boolean
oSv.dwOSVersionInfoSize = Len(oSv)
GetVersionEx oSv
GetKeyboardState keys(0)
KeyStatus = keys(Taste)
End FunctionPrivate Sub Switch(Taste, AnAus As Boolean)
If (KeyStatus(Taste) <> AnAus) Then
If (oSv.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS) Then
keys(Taste) = 1
SetKeyboardState keys(0)
ElseIf (oSv.dwPlatformId = VER_PLATFORM_WIN32_NT) Then
keybd_event Taste, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
keybd_event Taste, &H45, KEYEVENTF_EXTENDEDKEY Or _
KEYEVENTF_KEYUP, 0
End If
End If
End SubPublic Sub An()
Switch VK_NUM, 1
Switch VK_CAPS, 1
Switch VK_SCROLL, 1
End SubPublic Sub Aus()
Switch VK_NUM, 0
Switch VK_CAPS, 0
Switch VK_SCROLL, 0
End SubPublic Sub Status()
MsgBox "Num : " & KeyStatus(VK_NUM) & vbNewLine & _
"Caps: " & KeyStatus(VK_CAPS) & vbNewLine & _
"Scroll: " & KeyStatus(VK_SCROLL), _
vbExclamation, "Tastenstatus"
End Sub
Carsten
vbKeyNumpad0..vbKey_Numpad9
Versuche Sie mal so anzusprechen
Gruß
mattis
Carsten
ich sehe nicht, dass Du mit den Ziffern im Ziffernblock mit OnKey ein Ereignis auslösen kannst.
Allerdings hast Du uns bisher nicht verraten, in welchem Zusammenhang Du das brauchst. Denn zum Beispiel in einer Userform-Textbox gibt es das Ereignis KeyDown mit dem Du deutlich unterscheiden kannst, welche 1 gedrückt wurde. (mattis hat mich auf die Idee mit seinem Hinweis auf vbKeyNumpad1 gebracht).
Gruß Otto