2013-11-24 86 views
2

我正在嘗試發送一個鼠標右鍵單擊到一個computergame,而不會影響我的可見鼠標指針。
我不確定遊戲是不是喜歡它,或者如果我做錯了什麼。 這裏是我的代碼的短版: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; 
} 

我試過很多次,並確保該遊戲窗口的頂部和活躍等,但遊戲不會註冊我的點擊。(」發送的消息...「每次都會打印出來)
我知道我也可以使用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和WINUSER.H

+0

mouse_event只是點擊當前鼠標的位置,當我與MOUSEEVENTF_MOVE結合起來它的動作我看到鼠標指針。 :/我的遊戲是造成這種情況還是這種正常行爲? – Forivin

+0

爲什麼你將它與MOUSEEVENTF_MOVE結合?實際上,我對這個項目進行了編碼,所以不記得我是否使用了MOVE + CLICK或者只是點擊了。但是,請確保您提供的座標範圍爲0-65535,而不是監視器分辨率。 – AsG

+0

我實際上想模仿一個RDP應用程序,所以在我的情況下,鼠標指針移動到點擊位置就是期望的行爲。 – AsG