2016-11-05 3 views
0

Я создал автокликер с C#, используя Visual Studio для личного обучения.C# Autoclicker Visual Studio

Это работает как-то, но есть одна расстраивающая проблема, объясняемая ниже, что я не могу решить, что бы я ни делал. Я внедрил различные изменения в код, и теперь он должен работать и в своем потоке. В крайнем случае я прошел через другие автокликеры с открытым исходным кодом и проверял советы от их кодов, но ничего не сработало.

Вот видеоролик. (Когда я включаю автокликер и наводил курсор на любое раскрывающееся меню, он начинает это делать). Интервал не имеет значения, и он обычно нажимает на все остальное, что вызывается выпадающим меню.

https://gfycat.com/ContentGreedyFoal

Вот весь проект Visual Studio для тех, кто будет достаточно любезен, чтобы посмотреть: https://drive.google.com/file/d/0B36Lvz9TiOAWNF80cVVXWnRjeHM/view?usp=sharing

А вот код, а для тех, у кого нет времени, чтобы загрузить весь проект. Я извиняюсь из-за отсутствия комментариев и путающих имен переменных. Это один из моих первых проектов на C#, и я хотел бы завершить его, чтобы расширить свои знания.

http://pastebin.com/M1SiL9Rh

Спасибо заранее.

ответ

1

Я просто кратко рассмотрел ваш код, у вас, похоже, много петель здесь, , который объясняет щелчок, как только вы нажмете кнопку «Пуск».

private void MouseClicker() 
    { 
     int i = 0; 
     while (true) 
     { 
      Thread.Sleep(100); 
      while (threadStatus) 
      { 
       if (repeatTimes) 
       { 
        while (startbutton.Enabled == false) 
        { 
         int x = Cursor.Position.X; 
         int y = Cursor.Position.Y; 
         mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, x, y, 0, 0); 
        } 
       } 
       else if (randomInterval) 
       { 
        while (startbutton.Enabled == false) 
        { 
         int li = Convert.ToInt32(Math.Round(lowerintervalvalue.Value, 0)); 
         int hi = Convert.ToInt32(Math.Round(higherintervalvalue.Value, 0)); 
         int x = Cursor.Position.X; 
         int y = Cursor.Position.Y; 
         mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, x, y, 0, 0); 
         Random rand = new Random(); 
         Thread.Sleep(rand.Next(li, hi)); 
        } 
       } 
      } 
     } 
    } 

Вам нужна логика внутри этого метода, чтобы не нажимать больше времени повтора, установленного в окне.