Как одновременно эмулировать нажатие кнопки мыши и клавиши? - C#
Формулировка задачи:
Нужно сделать одновременную эмуляцию клика ЛКМ и к примеру Ctrl. Или чтобы Ctrl был зажат, и была возможность при этом эмулировать клик ЛКМ.
В отдельности для эмуляции нажатия клавиш на клавиатуре я использую SendKeys.Send.
Для эмуляции клика мышкой конструкцию:
Прошу предложите решения исходя из вышеописанного, но если есть более простое не требующие совмещения вышеописанных частей кода - еще лучше.
Спасибо.
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern void mouse_event(int dwFlags, int dx, int dy, int cButtons, int 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;
Cursor.Position = new Point(829, 475);
Thread.Sleep(500);
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, Cursor.Position.X, Cursor.Position.Y, 0, 0);Решение задачи: «Как одновременно эмулировать нажатие кнопки мыши и клавиши?»
textual
Листинг программы
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern void mouse_event(int dwFlags, int dx, int dy, int cButtons, int 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;
[System.Runtime.InteropServices.DllImport("user32.dll", SetLastError = true)]
static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
public const int KEYEVENTF_KEYUP = 0x0002; //Key up flag
public const int VK_CONTROL = 0x11;
///////////////// здесь какой-то код
keybd_event(VK_CONTROL, 0x9d, 0, 0); // Ctrl Press
Cursor.Position = new Point(700, 350);
Thread.Sleep(500);
mouse_event(MOUSEEVENTF_LEFTDOWN, Cursor.Position.X, Cursor.Position.Y, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, Cursor.Position.X, Cursor.Position.Y, 0, 0);
keybd_event(VK_CONTROL, 0x9d, KEYEVENTF_KEYUP, 0);