2013-11-24 3 views
2

현재 마우스 포인터를 움직이지 않고 마우스 오른쪽 버튼을 컴퓨터 게임으로 보내려고합니다.
게임에서 맘에 안 들거나 뭔가 잘못하고 있는지 확실하지 않습니다. "(.. C++ : 마우스 보내기 PostMessage/SendMessage를 사용하여 클릭

WORD tx = 500; 
WORD ty = 500; 
HWND windowHandle = FindWindow(NULL,TEXT("Game title")); 
if (windowHandle != 0) { 
    SendMessage(windowHandle, WM_RBUTTONDOWN, MK_RBUTTON, MAKELPARAM(tx, ty)); 
    Sleep(50); 
    SendMessage(windowHandle, WM_RBUTTONUP, MK_RBUTTON, MAKELPARAM(tx, ty)); 
    Sleep(50); 
    std::cout << "message sent..." << std::endl; 
} 

내가이 여러 번 시도하고 게임 창 상단과 활성화 등에 있는지 확인했으나 게임 내 클릭을 등록하지 않을 것이다 : 여기 내 코드의 짧은 버전입니다 message sent ... "는 항상 인쇄됩니다.)
SendInput도 사용할 수 있지만 처음에는 PostMessage를 사용하여 실제로는 불가능하다는 것을 알고 싶습니다.

답변

0

다음 메소드를 사용하여 Qt/C++에서 마우스 오른쪽 버튼을 클릭 한 시뮬레이션을 수행했습니다. 작동하는지 확인하십시오 :

mouse_event (MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_RIGHTDOWN, nX, nY, 0, 0); mouse_event (MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_RIGHTUP, nX, nY, 0, 0); 사용되는

라이브러리는 WINDOWS.H 있었다

+0

mouse_event 단지 현재 마우스 위치를 클릭 winuser.h 내가 MOUSEEVENTF_MOVE와 결합 할 때 내 눈에 보이는 마우스 포인터를 이동합니다. :/내 게임이이 문제를 일으켰습니까? 아니면 정상적인 동작입니까? – Forivin

+0

MOUSEEVENTF_MOVE와 결합하는 이유는 무엇입니까? 실제로 어떤 프로젝트에 대해 이렇게 오래 코딩되었으므로 MOVE + CLICK 또는 CLICK를 사용했는지 기억하지 못합니다. 그러나 모니터 해상도가 아닌 축 모두에 대해 0-65535 범위의 좌표를 제공해야합니다. – AsG

+0

실제로 RDP 응용 프로그램을 모방하고 싶었 기 때문에 마우스 포인터가 클릭 위치로 이동하는 것이 원하는 동작이었습니다. – AsG

관련 문제