반응형
    
    
    
  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;                    
}
이러면 이제 자동으로 클릭을 해주는 매크로를 만들 수 있습니다.!!
참고
반응형