반응형
OS : Window 11
마우스의 좌표값을 얻어오고 강제로 클릭도 시켜봅시다.
GetCursorPos(bool) : 마우스의 현재 위치를 알아내기
* Game2D클래스에 있는 함수로 마우스의 현재 위치를 리턴한다.
* 매개변수는 윈도우 좌표계로 할지 화면 좌표계로 할지 정할 수 있다
true : 화면 좌표계 (default)
false : 윈도우 좌표계
왼쪽 상단이 (0,0)이고 오른쪽으로 가면 x 값 증가 아래로가면 y값이 증가 합니다
아래의 코드로 간단하게 좌표값을 받아올 수 있습니다.
#include<iostream>
#include<Windows.h>
using namespace std;
POINT p;
int main() {
if(GetCursorPos(&p)) {
cout << p.x << "," << p.y << endl;
}
return 0;
}
마우스 클릭 표시는 확인 후 진행(참고 사이트에서는 game2D라이브러릴르 사용함)
원하는 위치로 이동하는 것도 한번 알아 봅시다.
SetCursorPos(x,y) : 지정한 x,y좌표 값으로 이동합니다.
#include<iostream>
#include<Windows.h>
using namespace std;
int main() {
SetCursorPos(200, 200);
system("pause");
return 0;
}
원하는 위치로 마우스를 이동시켰으니 이제 클릭도 시켜 봅시다.
클릭을 시킬때는 down후에 up을 시켜줘야 클릭으로 동작 됩니다.
void ClickMouse(int parm_x, int parm_y, bool left_flag)
{
int x_pos = parm_x*65535/GetSystemMetrics(SM_CXSCREEN);
int y_pos = parm_y*65535/GetSystemMetrics(SM_CYSCREEN);
::mouse_event(MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE, x_pos, y_pos,
0, ::GetMessageExtraInfo());
if(left_flag){
::mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_ABSOLUTE,
x_pos, y_pos, 0, ::GetMessageExtraInfo());
::mouse_event(MOUSEEVENTF_LEFTUP | MOUSEEVENTF_ABSOLUTE,
x_pos, y_pos, 0, ::GetMessageExtraInfo());
}
else
{
::mouse_event(MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_ABSOLUTE,
x_pos, y_pos, 0, ::GetMessageExtraInfo());
::mouse_event(MOUSEEVENTF_RIGHTUP | MOUSEEVENTF_ABSOLUTE,
x_pos, y_pos, 0, ::GetMessageExtraInfo());
}
}
// 아래 방법처럼 사용하시면 됩니다.
int main()
{
Sleep(1000);
POINT MousePos;
::GetCursorPos(&MousePos);
// 0,0, 으로 이동 후 왼쪽 버튼을 클립합니다.
ClickMouse(0, 0, 1);
// 0,0, 기존 마우스 포인트로 복귀 하여 왼쪽을 클릭 합니다.
ClickMouse(MousePos.x, MousePos.y, 1);
return 0;
}
이러면 이제 자동으로 클릭을 해주는 매크로를 만들 수 있습니다.!!
참고
반응형