2015년 5월 12일 화요일

C# Mouse handle(C# 으로 마우스 핸들링 하기)

DllImport 를 이용하여 user32.dll에 존재 하는 API 를 사용하면 된다.

private const uint LBUTTONDOWN = 0x00000002;
private const uint LBUTTONUP = 0x00000004;
[DllImport("user32.dll")] // DllImport .
static extern void mouse_event( uint dwFlags, uint dx, uint dy, uint dwData, int dwExtraInfo );
[DllImport("user32.dll")] // DllImport 
static extern int SetCursorPos(int x,int y);

1. 마우스 움직이기
Point pt = PointToScreen( Location ); // 마우스 좌표를 가져올 수 도 있음. Point로 좌표를 사용해도 됨.
SetCursorPos( pt.X, pt.Y );  // 마우스가 Pt 좌표에 위치하게끔 하는 함수.

2. 마우스 클릭.
mouse_event( LBUTTONDOWN, 0, 0, 0, 0 ); // 다운
mouse_event( LBUTTONUP, 0, 0, 0, 0 );     // 업 

3. 드래그
mouse_event( LBUTTONDOWN, 0, 0, 0, 0 );   // 시작
mouse_event( LBUTTONUP, 0, 0, 0, 0 );       //  끝

개인적으로 마우스와 키보드 핸들은 AutoIt를 사용하는 것이 조금 더 편하다. 물론 C#에서도 AutoIt COM library 를 reference에 추가 하여 사용하는 것도 가능하다. 현재 대부분의 게임의 메크로에 AutoIt이 사용될 만큼 좋은 기능은 많이 갖추고 있다. 유저 포럼도 상당수 존재 하여 원하는 함수사용에 크게 어려움이 없다.

댓글 없음:

댓글 쓰기