我正在嘗試使Teamviewer像一塊軟件一樣有趣,它允許一個人查看另一個人的屏幕並單擊以及所有這些。無論如何,我已經完成了大部分套接字工作,但我不知道如何讓鼠標點擊正常工作。下面是我在網上找到了編程移動鼠標代碼:在C#中移動鼠標(座標單位)
public static class VirtualMouse
{
// import the necessary API function so .NET can
// marshall parameters appropriately
[DllImport("user32.dll")]
static extern void mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo);
// constants for the mouse_input() API function
private const int MOUSEEVENTF_MOVE = 0x0001;
private const int MOUSEEVENTF_LEFTDOWN = 0x0002;
private const int MOUSEEVENTF_LEFTUP = 0x0004;
private const int MOUSEEVENTF_RIGHTDOWN = 0x0008;
private const int MOUSEEVENTF_RIGHTUP = 0x0010;
private const int MOUSEEVENTF_MIDDLEDOWN = 0x0020;
private const int MOUSEEVENTF_MIDDLEUP = 0x0040;
private const int MOUSEEVENTF_ABSOLUTE = 0x8000;
// simulates movement of the mouse. parameters specify changes
// in relative position. positive values indicate movement
// right or down
public static void Move(int xDelta, int yDelta)
{
mouse_event(MOUSEEVENTF_MOVE, xDelta, yDelta, 0, 0);
}
// simulates movement of the mouse. parameters specify an
// absolute location, with the top left corner being the
// origin
public static void MoveTo(int x, int y)
{
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, x, y, 0, 0);
}
// simulates a click-and-release action of the left mouse
// button at its current position
public static void LeftClick()
{
mouse_event(MOUSEEVENTF_LEFTDOWN, Control.MousePosition.X, Control.MousePosition.Y, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, Control.MousePosition.X, Control.MousePosition.Y, 0, 0);
}
}
現在我想移動使用moveTo方法鼠標,但它需要的任何運動瘋狂的高數字。無論如何,我可以匹配座標移動到屏幕上的位置像素?對不起,如果這看起來像一個明顯的問題,但我已經GOOGLE了近一個小時,我找不到什麼單位正在使用鼠標x和y位置的討論,所以我不能設置任何類型的公式來匹配一個面板上的點擊以點擊用戶的屏幕。
['Cursor.Position'](http://msdn.microsoft.com/en-us/library/system.windows.forms.cursor.position.aspx)看起來很有前景。 – chris