Search code examples
.netmousedriveremgucvmotion-detection

motion detection from webcam to control mouse pointer using .NET


My .NET application captures detects motion of a specific type of object from webcam. I am able to control movement of mouse within my form by translating the motion of the object. However I want to control the mouse movement outside my form, like some kind of virtual mouse.

What would be the best technique to achieve this?


Solution

  • To perform click and move cursor outside the form through code:

    [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
    }