Как использовать в скрытом оверлей определенные горячие клавиши

Мне нужно использовать клавишу которая будет включать и отключать код на определенную клавишу.

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

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        Opacity = 0;
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        ClickMouse();
    }

    private void ClickMouse()
    {
        int c = 0;
        POINT p = new POINT();
        while (true)
        {
            GetCursorPos(ref p);
            ClientToScreen(Handle, ref p);
            DoMouseDoubleLeftClick(p.x, p.y);
            c++;
            Thread.Sleep(200);
            if (c == 10)
                break;
        }
    }

    [DllImport("user32.dll")]
    public static extern bool ClientToScreen(IntPtr hWnd, ref POINT point);

    [StructLayout(LayoutKind.Sequential)]
    public struct POINT
    {
        public int x;
        public int y;
    }

    [DllImport("user32.dll")]
    public static extern void mouse_event(int dsFlags, int dx, int dy, int cButtons, int dsExtraInfo);

    public const int MOUSEENTF_LEFTDOWN = 0x02;
    public const int MOUSEENTF_LEFTUP = 0X04;

    public const int MOUSEENTF_RIGHTDOWN = 0x08;
    public const int MOUSEENTF_RIGHTUP = 0x10;

    private void DoMouseLeftClick(int x, int y)
    {
        mouse_event(MOUSEENTF_LEFTDOWN, x, y, 0, 0);
        mouse_event(MOUSEENTF_LEFTUP, x, y, 0, 0);
    }

    private void DoMouseRightClick(int x, int y)
    {
        mouse_event(MOUSEENTF_LEFTDOWN, x, y, 0, 0);
        mouse_event(MOUSEENTF_LEFTUP, x, y, 0, 0);
    }
    
    private void DoMouseDoubleLeftClick(int x, int y)
    {
        mouse_event(MOUSEENTF_LEFTDOWN, x, y, 0, 0);
        mouse_event(MOUSEENTF_LEFTUP, x, y, 0, 0);

        mouse_event(MOUSEENTF_LEFTDOWN, x, y, 0, 0);
        mouse_event(MOUSEENTF_LEFTUP, x, y, 0, 0); 
    }

    [DllImport("user32.dll")]
    public static extern bool GetCursorPos(ref POINT lpPoint);
}

Ответы (0 шт):