구리의 창고

마우스 이벤트 발생시키기 - SendInput() 본문

Programming

마우스 이벤트 발생시키기 - SendInput()

구리z 2010. 3. 5. 14:26
SetCursorPos()를 사용해서 마우스 위치를 지정 할 수 있다.

하지만, 클릭이나 드래그 같은 기능은 구현 할 수 없다.

그래서 SendInput()이란 함수를 이용하면 된다.

헤더파일은 windows.h 이다.

아래는 마우스 왼쪽버튼을 클릭 한 후, 다시 복구시키는 소스이다.

INPUT an_input;

an_input.type = INPUT_MOUSE;
an_input.mi.dx = 0;
an_input.mi.dy = 0;     
an_input.mi.mouseData = 0;
an_input.mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
an_input.mi.time = 0;
an_input.mi.dwExtraInfo = 0;

SendInput(1, &an_input, sizeof an_input);
Sleep(1);

an_input.mi.dwFlags = MOUSEEVENTF_LEFTUP;
SendInput(1, &an_input, sizeof an_input);



여기에 들어가는 마우스 이벤트는 msdn에 정의되있다.
http://msdn.microsoft.com/en-us/library/ms646260(VS.85).aspx

VOID mouse_event(          
    DWORD dwFlags,
    DWORD dx,
    DWORD dy,
    DWORD dwData,
    ULONG_PTR dwExtraInfo
);

dwFlags
MOUSEEVENTF_ABSOLUTE
MOUSEEVENTF_MOVE
MOUSEEVENTF_LEFTDOWN
MOUSEEVENTF_LEFTUP
MOUSEEVENTF_RIGHTDOWN
MOUSEEVENTF_RIGHTUP
MOUSEEVENTF_MIDDLEDOWN
MOUSEEVENTF_MIDDLEUP
MOUSEEVENTF_WHEEL //dwData 에 얼만큼 휠을 굴렸는지 알 수 있다.
MOUSEEVENTF_XDOWN
MOUSEEVENTF_XUP




Comments