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을 참고하면 된다.
고정크기배열 사용방법 #fixed (0) | 2012.08.07 |
---|---|
고정크기배열 사용방법 #MarshalAs (0) | 2012.08.07 |
컴퓨터의 Beep음을 내는 방법 (0) | 2012.08.07 |
강제 형 변환(cast)보다는 as, is 연산자를 사용하는 것이 좋다 (0) | 2012.08.07 |
#if, #endif 보다는 Conditional Attribute를 이용하라! (0) | 2012.08.07 |