티스토리 뷰
[DllImport("user32.dll")]
public static extern short GetKeyState(int keyCode);
[DllImport("User32.dll")]
public static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
if ((Win32API.GetKeyState((int)Keys.CapsLock) & 0xffff) != 0)
{
Win32API.keybd_event((byte)Keys.CapsLock, (byte)0, 0, 0);
Win32API.keybd_event((byte)Keys.CapsLock, (byte)0, 2, 0);
}
설명 :
Win32 API 함수 중에 하나인 GetKeyState는 현재 키가 눌려진 상태인지를 알 수 있게 해준다.
0xffff와 &연산을 하여 0이면 눌려지지 않은 상태, 0이면 눌려진 상태를 뜻한다.
인자로 들어가는 값은 가상 키보드 값이다.
코드의 경우 CapsLock이 눌려져 있다면 해제하는 소스이다.
keybd_event 역시 Win32 API이며 컴퓨터 전역에 키보드 메시지를 날려줄 수 있다.
keybd_evnet함수의 인자값은 MSDN을 참고하면 된다
반응형
댓글