1. 모듈에 다음의 API 와 상수를 선언합니다.
Public Const VK_CAPITAL = &H14
Public Const VK_NUMLOCK = &H90
Public Type KeyboardBytes
kbByte(0 To 255) As Byte
End Type
Public kbArray As KeyboardBytes
Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Long
Public Declare Function GetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long
Public Declare Function SetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long
2. 폼에 CommandButton 을 두개와 Lable 두개를 만들고 다음과 같이 코딩하시기 바랍니다.
Private Function CapsLock() As Integer
' CapsLock Key 의 On, Off 여부를 체크하는 함수
CapsLock = GetKeyState(VK_CAPITAL) And 1 = 1
End Function
Private Function NumLock() As Integer
' NumLock Key 의 On, Off 여부를 체크하는 함수
NumLock = GetKeyState(VK_NUMLOCK) And 1 = 1
End Function
Private Sub Command1_Click()
' CapsLock 키를 제어한다.
GetKeyboardState kbArray
kbArray.kbByte(VK_CAPITAL) = 1 ' 키를 무조건 On 시킨다.
' kbArray.kbByte(VK_CAPITAL) = 0 ' 키를 무조건 Off 시킨다.
' 키를 On 이면 Off 로 Off 면 On 을 시킨다.
' kbArray.kbByte(VK_CAPITAL) = IIf(kbArray.kbByte(VK_CAPITAL) = 1, 0, 1)
SetKeyboardState kbArray
Label1 = IIf(CapsLock() = 1, "CapsLock = On", "CapsLock = Off")
End Sub
Private Sub Command2_Click()
' NumLock 키를 제어한다.
GetKeyboardState kbArray
kbArray.kbByte(VK_NUMLOCK) = 1 ' 키를 무조건 On 시킨다.
' kbArray.kbByte(VK_NUMLOCK) = 1 ' 키를 무조건 Off 시킨다.
' 키를 On 이면 Off 로 Off 면 On 을 시킨다.
' kbArray.kbByte(VK_NUMLOCK) = IIf(kbArray.kbByte(VK_NUMLOCK) = 1, 0, 1)
SetKeyboardState kbArray
Label2 = IIf(NumLock() = 1, "NumLock = On", "NumLock = Off")
End Sub
Private Sub Form_Load()
If CapsLock() = 1 Then Label1 = "CapsLock = On" Else Label1 = "CapsLock = Off"
If NumLock() = 1 Then Label2 = "NumLock = On" Else Label2 = "NumLock = Off"
End Sub
첫댓글 이것도 않되네요. 노트북이라 그러나?