Как эмулировать зажатие кнопки 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
    }
→ Ссылка