Как я мог программно инициировать событие щелчка левой кнопкой на мыши?
Спасибо.
править: событие не инициировано непосредственно на кнопке. Я стремлюсь к платформе Windows.
https://web.archive.org/web/20140214230712/http://www.pinvoke.net/default.aspx/user32.sendinput
Используйте Win32 API для отправки ввода.
Обновление:
Поскольку я больше не работаю с Win32 API, я не буду обновлять этот ответ, чтобы он был правильным, если платформа изменится или веб-сайты станут недоступны. Поскольку этот ответ даже не соответствует стандартам Stackoverflow (не содержит самого ответа, а скорее ссылку на внешний, ныне несуществующий ресурс), нет смысла давать ему какие-либо баллы или тратить на него больше времени.
Вместо этого взгляните на этот вопрос о Stackoverflow, который, как мне кажется, является дубликатом:
Если это прямо на кнопке, вы можете использовать
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);
}