Вызвать ошибку, почему пытается запустить автокликер - PullRequest
0 голосов
/ 04 ноября 2019

Я хочу сделать автокликер, который будет щелкать при нажатии кнопки "F" ;Но каждый раз, когда я пытаюсь нажать "F" , я получаю ошибку вызова.

Я пытался запустить Click thread в другом пустоте, но это не сработало.

[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);

UserActivityHook actHook;

static bool autoclickerToggle = false;

private const int MOUSEEVENTF_LEFTDOWN = 0x02;
private const int MOUSEEVENTF_LEFTUP = 0x04;
private const int MOUSEEVENTF_RIGHTDOWN = 0x08;
private const int MOUSEEVENTF_RIGHTUP = 0x10;

public Form1()
{
    InitializeComponent();
    actHook = new UserActivityHook(); // crate an instance with global hooks
                                      // hang on events
    actHook.OnMouseActivity += new MouseEventHandler(MouseMoved);
    actHook.KeyDown += new KeyEventHandler(MyKeyDown);
    actHook.KeyPress += new KeyPressEventHandler(MyKeyPress);
    actHook.KeyUp += new KeyEventHandler(MyKeyUp);      
}

public void MouseMoved(object sender, MouseEventArgs e) { }

public void MyKeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.F)
    {
        AutoclickerToggle();                      
    }
}

public void MyKeyPress(object sender, KeyPressEventArgs e) { }

void AutoclickerToggle()
{
    if (autoclickerToggle)
    {
        autoclickerToggle = false;
    }
    else
    {
        autoclickerToggle = true;
        Thread Click = new Thread(() => Clicker());
        Click.Start();
    }
}  

public void MyKeyUp(object sender, KeyEventArgs e) { }

public void Clicker()
{
    while (autoclickerToggle)
    {
        int X = Cursor.Position.X;
        int Y = Cursor.Position.Y;
        mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
        Thread.Sleep(100);
    }
}

Как я уже сказал, у меня появляется эта ошибка при нажатии "F" (там использовался переводчик, потому что у меня была эта ошибка на польском языке) "Вызов PInvoke 'Test! Test.Form1 :: mouse_event' имеетнарушает баланс стека. Вероятной причиной является несоответствие между управляемой подписью PInvoke и неуправляемой целевой подписью. Убедитесь, что вызываемое соглашение и параметры подписи функции PInvoke соответствуют неуправляемой целевой подписи "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...