프로그래밍

 3198, 1/160 회원가입  로그인  
   xkdlrjxkdltm
   키보드 입력 명령어좀 알려주세요

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=6379 [복사]


예: 키보드의 enter키를 누르게 한다
       a를 누르게 한다
         esc를 누르게한다
        몇초동안 누르게한다
         등 알려주세요 ㅠㅠ

  Hit : 4564     Date : 2013/08/27 09:06



    
rainroad87 질문의 요지를 잘 모르겠네여...

혹시 키보드 입력이벤트를 핸들링 하는 방법에 대해서 질문하시는건가요?

아니면 키 입력시 발생되는 값에 대해서 질문하시는건가요?
2013/08/28  
xkdlrjxkdltm 값을 출력한다기보다는 핸들링 한다는게 맞겠죠 ㅎㅎ
키보드를 사람의 손으로 누르는 그런거요. 컨트롤+알트+델레트 이거누르면 작업창으뜨자나요?
2013/08/28  
rainroad87 윈도우 같은 경우에는

커널 내부에서 메시지 큐에 키 입력 이벤트가 저장됩니다.

작성하시는 프로그램에서 윈도우 내부의 메시지를 꺼내서 핸들링이 가능한데

그것을 보고 보통 메시지 펌핑이라고 부르기도 합니다.

VS사용하신다는 가정하에 Win32로 기본프로젝트 생성하실경우

OS 커널 메시지 큐에서 메시지를 꺼내오는 코드는

while (GetMessage(&msg, NULL, 0, 0))
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}

입니다.

키 입력 이벤트를 핸들링 하는 함수의 프로토타입은
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

입니다.

키보드 입력일 경우 WM_KEYDOWN, WM_KEYUP 으로 이벤트가 발생되는데

winuser.rh 파일을 보면

#define WM_KEYDOWN 0x0100
#define WM_KEYUP 0x0101
이렇게 define되어있습니다
2013/08/28  
rainroad87 만약에 키보드를 클릭하지 않고 키입력 이벤트를 발생하고 싶을시에는

키보드 후킹이나 디바이스 드라이버단에서 이벤트를 인터럽트 시키면 될꺼 같긴 한데

그쪽분야는 잘 몰라서... 도망가겠습니다 뿅!
2013/08/28