обнаружение движения с веб-камеры для управления указателем мыши с помощью .NET - PullRequest
0 голосов
/ 24 марта 2012

Мое приложение .NET захватывает обнаружение движения объекта определенного типа с веб-камеры.Я могу контролировать движение мыши в моей форме, переводя движение объекта.Однако я хочу управлять движением мыши за пределами моей формы, например, какой-нибудь виртуальной мышью.

Каков наилучший метод для достижения этой цели?

Ответы [ 3 ]

2 голосов
/ 24 марта 2012

Вы можете попытаться достичь этого с помощью вызовов Win API:

 [DllImport("user32.dll")]
 static extern bool SetCursorPos(int X, int Y);

 [DllImport("user32.dll")]
 public static extern bool GetCursorPos(out Point pt);

 Point current;
 GetCursorPos(out current);
 SetCursorPos(current.X + 10, current.Y + 10);

Это будет работать вне приложения.

1 голос
/ 24 марта 2012

В C #:

//using System.Windows.Forms;
//using System.Drawing;
Cursor.Position = new Point(x, y);

Или, если вы хотите переместить мышь, а не расположить ее:

//using System.Windows.Forms;
//using System.Drawing;
Cursor.Position = Cursor.Position + new Size(deltaX, deltaY);
0 голосов
/ 25 марта 2012

Чтобы выполнить клик и переместить курсор за пределы формы через код:

[DllImport("user32.dll")]
static extern void mouse_event(int flags, int dX, int dY, int buttons, int extraInfo);
#region mouseConstants
const int MOUSE_MOVE = 0x00000001;
const int MOUSE_LEFTDOWN = 0x00000002;
const int MOUSE_LEFTUP = 0x00000004;
const int MOUSE_RIGHTDOWN = 0x00000008;
const int MOUSE_RIGHTUP = 0x00000010;
const int MOUSE_MIDDLEDOWN = 0x00000020;
const int MOUSE_MIDDLEUP = 0x00000040;
const int MOUSE_WHEEL = 0x00000800;
const int MOUSE_ABSOLUTE = 0x00008000; 
#endregion

private void performClick(int posX, int posY)
{
    Cursor.Position = new Point(posX, posY);  // to move the cursor at desired position
    mouse_event(MOUSE_LEFTDOWN, 0, 0, 0, 0);  // to perform left mouse down
    mouse_event(MOUSE_LEFTUP, 0, 0, 0, 0);    // to perform left mouse up
}
...