私は、Teamviewer を楽しみのためのソフトウェアのようにしようとしています。これにより、ある人が別の人の画面を表示したり、クリックしたりできるようになります。とにかく、私はほとんどすべてのソケット関連の作業を完了しましたが、マウス クリックを正しく機能させる方法がわかりません。プログラムでマウスを動かすためにオンラインで見つけたコードは次のとおりです。
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 メソッドを使用してマウスを移動したいと考えていますが、移動には非常に大きな数値が必要です。とにかく、ここに移動するための座標を画面上の位置にピクセル単位で一致させることができますか? これが明白な質問のように思われる場合は申し訳ありませんが、ほぼ 1 時間グーグルで検索しましたが、マウスの x と y の位置に使用されている単位についての議論が見つかりません。 1 つのパネルでのクリックとユーザーの画面でのクリックを一致させる式。