首页 > 解决方案 > 每次我按“开始”时,C# autoclicker 都会崩溃

问题描述

我在 C# 中的 Auto Clicker 上进行编码,但我有两个问题。首先,每次我启动程序并单击“开始”时它都可以工作,但我无法停止它。该程序不再响应。其次,当我尝试按下“F7”按钮时,它应该会自动启动和停止,但事实并非如此。任何人都可以帮助我,顺便说一句,我对 C# 有点新。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace AutoClicker
{
    public partial class Form1 : Form
    {
        private const int MOUSEEVENTF_LEFTDOWN = 0x0002;
        private const int MOUSEEVENTF_LEFTUP = 0x0004;

        public int zahl;
        public bool isPressed = false;

        [DllImport("user32.dll")]
        static extern short GetAsyncKeyState(Keys vKey);

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

        public Form1()
        {
            InitializeComponent();
        }

        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            CheckForIllegalCrossThreadCalls = false;
            Thread CL = new Thread(clicker);
            CL.Start();
            buttonStart.Enabled = true;
            buttonStop.Enabled = false;
            backgroundWorker1.RunWorkerAsync();
        }

        private void label2_Click(object sender, EventArgs e)
        {

        }

        private void label3_Click(object sender, EventArgs e)
        {

        }

        private void numericUpDown1_ValueChanged(object sender, EventArgs e)
        {
            zahl = Convert.ToInt32(Math.Round(numericUpDown1.Value, 0));
        }

        private void clicker(){
                while (true) {
                    if (isPressed == true)
                    {
                    mouse_event(dwFlags: MOUSEEVENTF_LEFTUP, dx: 0, dy: 0, cButtons: 0, dwExtraInfo: 0);
                    Thread.Sleep(1);
                    mouse_event(dwFlags: MOUSEEVENTF_LEFTDOWN, dx: 0, dy: 0, cButtons: 0, dwExtraInfo: 0);
                    Thread.Sleep(zahl);
                    }
                    if (isPressed != true)
                    {
                        break;
                    }
                    Thread.Sleep(2);
                }
        }

        private void buttonStart_Click(object sender, EventArgs e)
        {
            isPressed = true;
            buttonStart.Enabled = false;
            buttonStop.Enabled = true;
            clicker();
        }

        private void buttonStop_Click(object sender, EventArgs e)
        {
            isPressed = false;
            buttonStart.Enabled = true;
            buttonStop.Enabled = false;
            clicker();
        }

        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            while (true)
            {
                if (buttonStart.Enabled == true)
                {
                    if (GetAsyncKeyState(Keys.F7) < 0)
                    {
                        isPressed = false;
                    }
                }else if(buttonStart.Enabled != true)
                {
                    if (GetAsyncKeyState(Keys.F7) < 0)
                    {
                        isPressed = false;
                    }
                    
                }
                Thread.Sleep(1);
            }
        }
    }
}

标签: c#

解决方案


推荐阅读