1
ห้อง MS Access / : บังคับให้ไฟ numlock ติดทุกครั้ง หลังจากเลือกรายการใน Combobox1
« เมื่อ: 03 ส.ค. 63 , 14:30:43 »ปัญหาคือ เวลาผมเลือก รายการใน combobox1 แล้วไฟของปุ่ม Numlock ชอบดับเองตลอดเวลา แล้วเวลาเลือกรายการอีกตรั้งก็จะติด เลือกรายการครั้งที่ 3 ก็จะดับ
ช่วยด้วยครับคืออยากให้ไฟติดตลอดเวลาไม่ว่ากี่ครั้งที่เลือกรายการครับ เป็น Windows 10 , Access 2007 ครับ
ขั้นตอนนะครับ
1.สร้าง Module ใส่โค้ดในลงไปแล้วเซฟ
โค๊ด: [Select]
Option Compare Database
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 ' Maintenance string for PSS usage
End Type
' API declarations:
Private Declare Function GetVersionEx Lib "Kernel32" _
Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFO) As Long
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
' Constant declarations:
Const VK_NUMLOCK = &H90
Const VK_SCROLL = &H91
Const VK_CAPITAL = &H14
Const KEYEVENTF_EXTENDEDKEY = &H1
Const KEYEVENTF_KEYUP = &H2
Const VER_PLATFORM_WIN32_NT = 2
Const VER_PLATFORM_WIN32_WINDOWS = 1
Function IsNumLockOn() As Boolean
Dim o As OSVERSIONINFO
o.dwOSVersionInfoSize = Len(o)
GetVersionEx o
Dim keys(0 To 255) As Byte
GetKeyboardState keys(0)
IsNumLockOn = keys(VK_NUMLOCK)
End Function
Sub ToggleNumLock()
Dim o As OSVERSIONINFO
o.dwOSVersionInfoSize = Len(o)
GetVersionEx o
Dim keys(0 To 255) As Byte
GetKeyboardState keys(0)
If o.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then '=====Win95
keys(VK_NUMLOCK) = Abs(Not keys(VK_NUMLOCK))
SetKeyboardState keys(0)
ElseIf o.dwPlatformId = VER_PLATFORM_WIN32_NT Then '=====WinNT
'Simulate Key Press
keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
'Simulate Key Release
keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY _
Or KEYEVENTF_KEYUP, 0
End If
End Sub
Sub mySendKeys(sKeys As String, Optional bWait As Boolean = False)
Dim bNumLockState As Boolean
bNumLockState = IsNumLockOn()
SendKeys sKeys, bWait
If IsNumLockOn() <> bNumLockState Then
ToggleNumLock
End If
End Sub
ขั้นตอนที่ 2 ไปที่ฟอร์ม เราจะทำกับ Control ตัวไหนให้กำหนด Event GoFocus ได้เลยเช่น
โค๊ด: [Select]
Private Sub Combo1_GotFocus()
Call ToggleNumLock
End Sub
Credit http://access.mvps.org/
โพสต์นี้ได้รับคำขอบคุณจาก: WISSANU