c# - 每次我按“开始”时,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);
}
}
}
}
解决方案
推荐阅读
- r - 是否有用于从图像中读取条形码的 R 包?
- javascript - 设置相对于父级的图像大小
- python - 如何用不同的 x 轴名称和 y 轴名称标记每个图形
- angular - 如何在 codeanywhere IDE 中预览 Angular 应用程序?
- python - 在 Python 中使用带有 AST 的装饰器包装函数
- linux - httpd 虚拟主机文件重定向到不正确的网站
- c# - 尝试将新对象添加到列表时出现 404 错误 MVC
- javascript - 使用 GTM / JQuery 获取手风琴标题
- python - 与 Pandas 交叉连接
- r - 添加 ggsignif 以使用数字 x 轴进行绘图会导致错误“只能处理在 x 轴上绘制的组的数据”