2015-02-07 211 views

回答

-1

可以使用mouse_event功能點擊(X,Y):

mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0); 
mouse_event(MOUSEEVENTF_LEFTUP, x, y, 0, 0); 
+0

''mouse_event()'已被['SendInput()'](https://msdn.microsoft.com/en-us/library/windows/desktop/ms646310.aspx)取代,你應該使用代替。你連接的文檔甚至都這樣說。 – 2015-02-08 03:36:12

+0

@MustafaChelik您的解決方案始終將消息發送到光標座標,而不是x,y。 – Ufx 2015-02-08 06:59:58

2

使用SendInput()功能:

INPUT Inputs[3] = {0}; 

Inputs[0].type = INPUT_MOUSE; 
Inputs[0].mi.dx = ...; // desired X coordinate 
Inputs[0].mi.dy = ...; // desired Y coordinate 
Inputs[0].mi.dwFlags = MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE; 

Inputs[1].type = INPUT_MOUSE; 
Inputs[1].mi.dwFlags = MOUSEEVENTF_LEFTDOWN; 

Inputs[2].type = INPUT_MOUSE; 
Inputs[2].mi.dwFlags = MOUSEEVENTF_LEFTUP; 

SendInput(3, Inputs, sizeof(INPUT)); 

請務必仔細閱讀關於如何指定在MOUSEINPUT documentation評論dxdy在多監視器環境中使用MOUSEEVENTF_ABSOLUTE時正確。

+0

您的解決方案始終將消息發送到0,0,而不是x,y。 – Ufx 2015-02-08 07:04:26

+0

第二個和第三個輸入不包含'MOUSEEVENTF_ABSOLUTE'標誌,因此它們與第一個輸入建立的鼠標位置有關。這在文檔中說明:「如果未指定MOUSEEVENTF_ABSOLUTE值,則dx和dy指定相對於上一個鼠標事件(上一個報告的位置)的移動。」因此,在第二個和第三個輸入中,dx和dy是0是可以的。 – 2015-02-08 07:35:41