티스토리 뷰

C#

[C#] CapsLock 상태 확인하는 방법

inasie 2008. 12. 29. 10:41

[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을 참고하면 된다


반응형
댓글