Как программно вызвать щелчок левой кнопкой мыши в C #? - PullRequest
6 голосов
/ 29 апреля 2010

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

Спасибо.

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

Ответы [ 3 ]

8 голосов
/ 29 апреля 2010

Чтобы выполнить щелчок мышью:

 [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);
        }
8 голосов
/ 29 апреля 2010

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

button1.PerformClick();

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

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

1 голос
/ 29 апреля 2010

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

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

Обновление:

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

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

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

...