WPF实现自动持续左击鼠标

下面是一个完整的 WPF 应用程序示例。该示例包括一个简单的用户界面,用户可以通过按钮来开始和停止鼠标的持续点击。(注:点击开始后鼠标移动到需要点击的位置即可)

完整的 WPF Demo
创建新的 WPF 项目:

打开 Visual Studio,选择“创建新项目”。
选择“WPF 应用程序”,然后点击“下一步”。
输入项目名称,选择保存位置,然后点击“创建”。
添加图标(可选):

按照之前的步骤添加图标文件。
修改 MainWindow.xaml

打开 MainWindow.xaml 文件,并将其内容替换为以下代码:

<Window x:Class="MouseClicker.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Mouse Clicker" Height="200" Width="300">
    <Grid>
        <StackPanel VerticalAlignment="Center" HorizontalAlignment="Center">
            <Button Name="StartButton" Content="开始点击" Width="100" Margin="10" Click="StartButton_Click"/>
            <Button Name="StopButton" Content="停止点击" Width="100" Margin="10" IsEnabled="False" Click="StopButton_Click"/>
        </StackPanel>
    </Grid>
</Window>

修改 MainWindow.xaml.cs
打开 MainWindow.xaml.cs 文件,并将其内容替换为以下代码:

using System;
using System.Runtime.InteropServices;
using System.Threading;
using System.Windows;
using System.Windows.Threading;

namespace MouseClicker
{
    public partial class MainWindow : Window
    {
        [DllImport("user32.dll")]
        public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint dwData, UIntPtr dwExtraInfo);

        private const uint MOUSEEVENTF_LEFTDOWN = 0x0002;
        private const uint MOUSEEVENTF_LEFTUP = 0x0004;

        private Thread clickThread;
        private bool isClicking;

        public MainWindow()
        {
            InitializeComponent();
        }

        private void StartButton_Click(object sender, RoutedEventArgs e)
        {
            if (clickThread == null || !clickThread.IsAlive)
            {
                isClicking = true;
                clickThread = new Thread(ClickMouse);
                clickThread.IsBackground = true;
                clickThread.Start();

                StartButton.IsEnabled = false;
                StopButton.IsEnabled = true;
            }
        }

        private void StopButton_Click(object sender, RoutedEventArgs e)
        {
            isClicking = false;

            StartButton.IsEnabled = true;
            StopButton.IsEnabled = false;
        }

        private void ClickMouse()
        {
            // 获取屏幕中心点
            int screenWidth = (int)SystemParameters.PrimaryScreenWidth;
            int screenHeight = (int)SystemParameters.PrimaryScreenHeight;
            int x = screenWidth / 2;
            int y = screenHeight / 2;

            while (isClicking)
            {
                // 模拟鼠标左键按下
                mouse_event(MOUSEEVENTF_LEFTDOWN, (uint)x, (uint)y, 0, UIntPtr.Zero);
                // 模拟鼠标左键抬起
                mouse_event(MOUSEEVENTF_LEFTUP, (uint)x, (uint)y, 0, UIntPtr.Zero);

                // 等待一段时间,控制点击频率
                Thread.Sleep(100); // 100毫秒
            }
        }
    }
}

说明
用户界面:应用程序包含两个按钮,一个用于开始点击,另一个用于停止点击。
鼠标点击逻辑:使用 mouse_event 函数模拟鼠标的左键按下和抬起。点击发生在屏幕的中心位置。
线程处理:使用一个后台线程来处理鼠标点击,以避免阻塞UI线程。
开始和停止控制:通过 isClicking 变量控制点击的开始和结束,确保用户可以通过按钮控制鼠标点击。
运行程序
生成并运行该项目。
点击“开始点击”按钮,鼠标将开始在屏幕中心位置持续点击。
点击“停止点击”按钮,鼠标点击将停止。
注意事项
请确保在合适的环境中运行此程序,以避免意外的鼠标操作。
你可以根据需要调整 Thread.Sleep(100) 中的时间,以改变点击频率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值