Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to programatically trigger a mouse left click in C#?

Tags:

c#

click

mouse

How could I programmatically trigger a left-click event on the mouse?

Thanks.

edit: the event is not triggered directly on a button. I'm aiming for the Windows platform.

like image 855
Alex Avatar asked Apr 29 '10 11:04

Alex


3 Answers

To perform a mouse click:

 [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
        public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);

        private const int MOUSEEVENTF_LEFTDOWN = 0x02;
        private const int MOUSEEVENTF_LEFTUP = 0x04;
        private const int MOUSEEVENTF_RIGHTDOWN = 0x08;
        private const int MOUSEEVENTF_RIGHTUP = 0x10;

        public static void DoMouseClick()
        {
            mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
        }

To move the cursor where you want:

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

        public static void MoveCursorToPoint(int x, int y)
        {
            SetCursorPos(x, y);
        }
like image 190
JohnForDummies Avatar answered Sep 20 '22 12:09

JohnForDummies


If it's right on a button, you can use

button1.PerformClick();

Otherwise, you can check out this MSDN article which discusses simulating mouse (and keyboard) input.

Additionally, this project may be able to help you out as well. Under the covers, it uses SendInput.

like image 22
NG. Avatar answered Sep 21 '22 12:09

NG.


https://web.archive.org/web/20140214230712/http://www.pinvoke.net/default.aspx/user32.sendinput

Use the Win32 API to send input.

Update:

Since I no longer work with Win32 API, I will not update this answer to be correct when the platform changes or websites become unavailable. Since this answer doesn't even conform to Stackoverflow standards (does not contain the answer itself, but rather a link to an external, now defunct resource), there's no point giving it any points or spending any more time on it.

Instead, take a look at this question on Stackoverflow, which I think is a duplicate:

How to simulate Mouse Click in C#?

like image 42
Alex Avatar answered Sep 18 '22 12:09

Alex