Как программно вызвать левой кнопкой мыши в C#?

Как я могу программно вызвать событие щелчка левой кнопкой мыши?

спасибо.

edit: событие не запускается непосредственно на кнопке. Я нацелен на платформу Windows.

3 ответов


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

используйте Win32 API для отправки ввода.

обновление:

поскольку я больше не работаю с Win32 API, я не буду обновлять этот ответ, чтобы быть правильным, когда платформа изменяется или веб-сайты становятся недоступными. Поскольку этот ответ даже не соответствует стандартам Stackoverflow (не содержит самого ответа, а скорее ссылку на внешний, ныне несуществующий ресурс), нет смысла давать ему какие-либо очки или тратить на него больше времени.

вместо этого взгляните на этот вопрос в Stackoverflow, который, я думаю, является дубликатом:

как имитировать щелчок мыши в C#?


Если это прямо на кнопке, вы можете использовать

button1.PerformClick();

в противном случае, вы можете проверить эта статья MSDN который обсуждает имитацию ввода мыши (и клавиатуры).

кроме того, этот проект возможно, сможет помочь вам. Под покрывалами он использует SendInput.


для выполнения щелчка мыши:

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

чтобы переместить курсор туда, куда вы хотите:

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

        public static void MoveCursorToPoint(int x, int y)
        {
            SetCursorPos(x, y);
        }