C#에서 PostMessage를 이용해 비활성 매크로를 구현 했었는데,

마우스 클릭(0x201, 0x202)과 이동 (0x200)으로 구현하니깐 작동을 안하더군요.

찾아보니 PostMessage로 드래그를 구현할 때는 클릭 이벤트만 써야 되더군요


C#에서 구현한 예제입니다.


int lParam = (startY * 65536) + startX;
PostMessage(hwnd, 0x201, 1, lParam);
lParam = (endY * 65536) + endX;
PostMessage(hwnd, 0x201, 1, lParam);
PostMessage(hwnd, 0x202, 0, lParam);


이를 오토핫키로 구현한다면


lparam:=(startY * 65536)+startX
PostMessage, 0x201, 1, %lparam%, ......
lparam:=(endY * 65536)+endX
PostMessage, 0x201, 1, %lparam%, ......
PostMessage, 0x202, 0, %lparam%, ......


오토핫키 코드 짜본지가 오래되서 이게 맞는지? 잘 모르겠습니다. 뒤의 .... 파라메터들은 생략했습니다.


대략 코드 설명을 하자면

드래그를 시작할 부분의 좌표(startX, startY)에서 마우스 왼쪽버튼을 누르는 이벤트를 보내고,

드래그를 마칠 부분의 좌표(endX, endY)에서 다시 클릭 이벤트를 보냅니다.

그 뒤 마칠 부분의 좌표에서 마우스 버튼 Up을 시키면 드래깅이 됩니다.



답글