프로그래밍/C++

C++ 마우스 입력 다루기

민또배기 2023. 3. 2. 21:20
반응형

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;                    
}

이러면 이제 자동으로 클릭을 해주는 매크로를 만들 수 있습니다.!! 

 

 

참고

마우스입력

 

반응형