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

Я хочу, чтобы манипулировать мышью. Это будет простой макрос для моих собственных целей. Поэтому он перемещает мышь в определенную позицию на экране и нажимает так, как будто я нажимаю с определенным интервалом.

Вот код, который использует неуправляемые функции для имитации щелчков мыши:

//This is a replacement for Cursor.Position in WinForms [System.Runtime.InteropServices.DllImport("user32.dll")] static extern bool SetCursorPos(int x, int y); [System.Runtime.InteropServices.DllImport("user32.dll")] public static extern void mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo); public const int MOUSEEVENTF_LEFTDOWN = 0x02; public const int MOUSEEVENTF_LEFTUP = 0x04; //This simulates a left mouse click public static void LeftMouseClick(int xpos, int ypos) { SetCursorPos(xpos, ypos); mouse_event(MOUSEEVENTF_LEFTDOWN, xpos, ypos, 0, 0); mouse_event(MOUSEEVENTF_LEFTUP, xpos, ypos, 0, 0); } 

Чтобы мышь нажата на определенную длительность, вы можете Sleep() stream, выполняющий эту функцию, например:

 mouse_event(MOUSEEVENTF_LEFTDOWN, xpos, ypos, 0, 0); System.Threading.Thread.Sleep(1000); mouse_event(MOUSEEVENTF_LEFTUP, xpos, ypos, 0, 0); 

Приведенный выше код будет удерживать мышь нажатой в течение 1 секунды, если пользователь не нажимает кнопку отпускания кнопки. Кроме того, не забудьте выполнить этот код в основном streamе пользовательского интерфейса, так как это приведет к зависанию .

Вы можете перемещаться по позиции XY. Пример:

 windows.Forms.Cursor.Position = New System.Drawing.Point(Button1.Location.X + Me.Location.X + 50, Button1.Location.Y + Me.Location.Y + 30) 

Чтобы щелкнуть, вы можете использовать приведенный ниже код:

 using System.Runtime.InteropServices; private const UInt32 MOUSEEVENTF_LEFTDOWN = 0x0002; private const UInt32 MOUSEEVENTF_LEFTUP = 0x0004; [DllImport("user32.dll")] private static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint dwData, uint dwExtraInf); private void btnSet_Click(object sender, EventArgs e) { int x = Convert.ToInt16(txtX.Text);//set x position int y = Convert.ToInt16(txtY.Text);//set y position Cursor.Position = new Point(x, y); mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);//make left button down mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);//make left button up } 

Кредит JOHNYKUTTY

  • Редактирование одного клика в WPF DataGrid
  • Как преобразовать изображение в массив байтов
  • WPF Как получить доступ к элементу управления из DataTemplate
  • Модель Mvvm ViewModel
  • WPF Combobox: различные шаблоны в текстовом поле и выпадающем списке
  • Как периодически выполнять метод из клиентского приложения WPF с помощью streamовой передачи или таймера
  • Как разместить содержимое WPF в приложениях MFC?
  • Как определить ограничения ввода TextBox?
  • page.DataContext не унаследован от родительского фрейма?
  • Как создать таймер в WPF?
  • INotifyPropertyChanged WPF
  • Давайте будем гением компьютера.