我有3D遊戲,我需要從另一個應用程序按此遊戲中的按鈕。 Spy ++說這個遊戲的窗口是UnityWndClass。當我在遊戲中按下按鈕時,窗口只會收到類似WM_SETCURSOR
,WM_LBUTTONDOWN
等的鼠標消息,但是當我嘗試將WM_LBUTTONDOWN
和WM_LBUTTONUP
與其他窗口中的按鈕座標一起發送時,什麼也沒有發生。爲什麼?任何想法如何按下按鈕?向UnityWndClass發送「按鈕按下」消息
1
A
回答
0
WM_SETCURSOR
用於更改您自己的窗口的光標圖像。 WM_LBUTTONDOWN
和WM_LBUTTONUP
是鼠標點擊後發送的通知消息。 WM_LBUTTONXXX
消息可能不是由主窗口過程處理的。
要僞造鼠標輸入,您可以使用mouse_event
或SendInput
。例如,這將光標移動到x=10/y=10
,然後單擊鼠標左鍵。
int x = 10 * 65536/GetSystemMetrics(SM_CXSCREEN);
int y = 10 * 65536/GetSystemMetrics(SM_CYSCREEN);
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, x, y, 0, 0);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
或者使用SendInput
多個電話(見註釋)
INPUT input[3];
for (int i = 0; i < 3; i++)
{
memset(&input[i], 0, sizeof(INPUT));
input[i].type = INPUT_MOUSE;
}
input[0].mi.dx = x;
input[0].mi.dy = y;
input[0].mi.dwFlags = MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE;
input[1].mi.dwFlags = MOUSEEVENTF_LEFTDOWN;
input[2].mi.dwFlags = MOUSEEVENTF_LEFTUP;
SendInput(3, input, sizeof(INPUT));
窗口應至少可見,最好是活動的。您可以使用SetForegroundWindow
。請參閱此example以確保窗口可見並處於活動狀態。
其他替代方案:
用狙++,以獲取有關要按下按鈕信息。例如,如果這是Windows計算器,您可以窺探計算器的按鈕,它會顯示計算器按鈕的ID已設置爲0x84。您可以發送WM_COMMAND
與WPARAM
設置爲0x84來模擬按鈕按下。
HWND hwnd = FindWindow(0, L"Calculator");
if (IsWindow(hwnd))
{
//this should put "234" in to calculator's edit box
SendMessage(hwnd, WM_COMMAND, 0x84, 0);
SendMessage(hwnd, WM_COMMAND, 0x85, 0);
SendMessage(hwnd, WM_COMMAND, 0x86, 0);
}
相關問題
- 1. 按下按鈕時發送消息
- 2. 按下按鈕發送消息
- 3. 廣東話發送消息trought當按下按鈕
- 4. javascript:當用戶按下按鈕時發送自己的消息
- 5. 發送按鈕錯誤消息轉義
- 6. 預定義消息Facebook發送按鈕
- 7. 如何在Wordpress中創建一個按鈕,當按下該按鈕時會向我發送文本消息?
- 8. 按下按鈕在python多處理環境下在tcp流上發送消息
- 9. 如何通過presentModalViewController將消息發送到按下按鈕的UIViewContoller(登錄)?
- 10. 在按鈕按下發送select_tag值
- 11. 按下按鈕時發送httpdata?
- 12. 信息發送到一個按鈕的方法W/O按下按鈕
- 13. 按下按鈕'消失'
- 14. 發送按鈕不發送
- 15. 按回車鍵時發送消息
- 16. 按鈕單擊不工作。查看按鈕上發佈消息
- 17. Facebook發送按鈕 - 取消按鈕不起作用
- 18. 贊和發送按鈕彈出消失
- 19. 如何向Telegram發送消息,其中包含一個提示用戶轉發消息的按鈕?
- 20. 單選按鈕,不發送信息
- 21. 什麼消息導致一個按鈕發送一個WM_COMMAND消息
- 22. 如何使用後退按鈕發送消息
- 23. IOS如何使用按鈕發送消息?
- 24. 單擊按鈕時發送自動SMS消息
- 25. 如何從發送按鈕獲取Facebook消息內容?
- 26. 確定哪個UIPicker的工具欄按鈕發送消息
- 27. 如何將消息發送到不同視圖的按鈕?
- 28. IPN消息沒有在按鈕上發送
- 29. Android-點擊按鈕發送消息不會停止
- 30. 消息應用程序/ Whatsapp發送按鈕圖像
窗口應該是活動的,當我做假鼠標輸入? –
是的,窗口應該至少可見,如果它處於活動狀態,它會更好。我更新答案。 –
窗口**必須**具有輸入焦點才能接收輸入(合成或真實)。請再次閱讀[SendInput](https://msdn.microsoft.com/en-us/library/windows/desktop/ms646310.aspx)的文檔。爲'nInputs'傳遞'1'是一個錯誤。 *備註*部分解釋,爲什麼。另外,你提出的任何黑客都不是一個可靠的解決方案。正確的方法是使用[UI自動化](https://msdn.microsoft.com/en-us/library/windows/desktop/ee684009.aspx),它不要求任何特定的窗口有任何輸入焦點點。 – IInspectable