Как эмулировать зажатие кнопки Ctrl?
Сабж.
Делаю кликер, мне надо нажимать Ctrl+LMB.
Клик мышкой делаю так:
public void leftClick(Point p)
{
Cursor.Position = p;
Thread.Sleep(350);
mouse_event((int)(MouseEventFlags.LEFTDOWN), 0, 0, 0, 0);
mouse_event((int)(MouseEventFlags.LEFTUP), 0, 0, 0, 0);
}
Ответы (1 шт):
Автор решения: Jasur1177
→ Ссылка
Попробуй так
[DllImport("user32.dll")]
static extern bool SetCursorPos(int x, int y);
[DllImport("user32.dll")]
public static extern void mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);
[DllImport("user32.dll")]
public static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, int dwExtraInfo);
private const int KEYEVENTF_KEYDOWN = 0x0000; // New definition
private const int KEYEVENTF_KEYUP = 0x0002; //Key up flag
public const int VK_LCONTROL = 0xA2;
public const int MOUSEEVENTF_LEFTDOWN = 0x02;
public const int MOUSEEVENTF_LEFTUP = 0x04;
// This simulates a left mouse click
public static void Ctrl_MouseLeft(int xpos, int ypos)
{
// Key Ctrl + Mouse Left
keybd_event(VK_LCONTROL, 0, KEYEVENTF_KEYDOWN, 0);
SetCursorPos(xpos, ypos);
mouse_event(MOUSEEVENTF_LEFTDOWN, xpos, ypos, 0, 0);
Thread.Sleep(100);
mouse_event(MOUSEEVENTF_LEFTUP, xpos, ypos, 0, 0);
keybd_event(VK_LCONTROL, 0, KEYEVENTF_KEYUP, 0);
}
static void Main(string[] args)
{
Thread.Sleep(3000);
Ctrl_MouseLeft(x,y); // x, y Position mouse
}