C# mouse_event

간단하게 마우스 클릭 이동 등등의 이벤트를 해보았다. 마우스 이동 클릭 등등.
 
일단 처음이다 보니 우리의 친구 구글링을 하면서 많은 것을 찾아 봤는데 왜 다들 올려준 간단 코드는 안 돌아 가는 건지 ㅎㄷㄷ 짜증....
 
이런저런 많은 방법 쓰다가 드디어 돌아가는 방법을 찾아서 공유를 해본다.
 
일단 MSDN을 봐도 있고 어딜 가든 흔하게 적혀 있는 flags다.
 
 
왼쪽 down : 0x00000002
왼쪽 up: 0x00000004
 
오른쪽 down  : 0x00000008
오른쪽 up : 0x000000010
 
x, y mouse의 위치 값을 포함하여 event를 발생함 : 0X8000
x, y에 지정한 위치로 이동 : 0x0001
 
아래는
//선언 부 mouse event를 사용하기 위한 선언 부이다.
[DllImport("user32.dll")]
static extern void mouse_event(uint dwFlags, uint dx, uint dy, int dwData, int dwExtraInfo);

일단 마우스 클릭을 테스트 한결과 사람들 말로는 x,y 값만 넣어서 마우스 다운,업 아래와 같이 사용 하면 돌아 간다 하는데 왜 난 안 돌아갈까? 그냥 그 자리에서 클릭만 하는 건지..... 그때 사용 했던 코드다.

 mouse_event(0x0002 | 0x0004, 100, 100, 0, 0);
 
화면기준 100, 100부분을 좌 클릭 하라 명령 보냈는데 안 돌더라 ㅠㅜ
요기서 한참 고생 했다....
 
그래서 찾은 방법이 마우스를 이동 시키는 기능을 넣어 보자 싶어
 
//해당 위치로 이동하도록 명령어 실행 하고 클릭을 하도록 했다.
mouse_event(0X8000 | 0x0001, 100, 100, 0, 0);
mouse_event(0x0002 | 0x0004, 0, 0, 0, 0);//좌 클릭
 
하지만 왜 x, y좌표로 이동을 안 하지? 헐 젠장....
 
그래서 더 찾아 보니 모니터 사이즈 어쩌고 저쩌고 젠장
 
다시 변경
mouse_event(0X8000 | 0x0001, (65535 / 1920) * 100, (65535 / 1080) * 100, 0, 0);//마우스 이동
mouse_event(0x0002 | 0x0004, 0, 0, 0, 0);//좌 클릭
 
(65535 / 1920) * 100, (65535 / 1080) * 100
이 부분이 중요하다
저 65535는 뭔지 모르겠지만 저 값에 모니터 해상도 X, Y를 각각 나눠 준 값에 가고 싶은 X,Y 좌표로 곱하면 그 자리로 정확하게 가더라....
 
이제 돌아간다 참 쉽다잉 왜 난 2시간 동안 삽질을 한 건지 이해를 못하겠다 ㅠㅜ...

오늘 끝나서 바로 올렸지만 수정해서 다시 올려 보겠다 ㅎㅎㅎㅎ
 
기분 완전 좋다잉

'Job > C#' 카테고리의 다른 글

C# 메크로 준비  (0) 2015.06.05
C# mouse_event  (0) 2015.06.02
C# 메크로 관련 공부 시작  (0) 2015.06.01

1 ··· 3 4 5 6 7 8 9 ··· 48 →