开发一个自动点击工具
来源:互联网 发布:安卓与php服务器端 编辑:程序博客网 时间:2024/06/06 21:42
一个人点鼠标总是很麻烦,尤其是这个时间很长的时候。所有就考虑要做一个模拟鼠标点击的工具。
1.准备
打开vs,新建一个窗口程序。
上面依次选择,
1.程序的类型:窗口程序
2.新程序的名字和命名空间
3.项目的位置。
然后就自动生成了一个窗体应用。
2.界面设计
类似上面的这个样子。一个输入框用来控制频率,一个按钮用来确认频率(ps:可以在输入框的离开事件中直接确认)
然后再从控件库加入一个小小的定时器。定时器的名字是Timer。
3.热键注册
首先全局注册一个热键来控制自动点击的开始与结束。
引用系统dll的方法
[DllImport("user32.dll", SetLastError = true)]public static extern bool RegisterHotKey( IntPtr hWnd, //要定义热键的窗口的句柄 int id, //定义热键ID(不能与其它ID重复) KeyModifiers fsModifiers, //标识热键是否在按Alt、Ctrl、Shift、Windows等键时才会生效 Keys vk //定义热键的内容 ); [DllImport("user32.dll", SetLastError = true)] public static extern bool UnregisterHotKey( IntPtr hWnd, //要取消热键的窗口的句柄 int id //要取消热键的ID ); //定义了辅助键的名称(将数字转变为字符以便于记忆,也可去除此枚举而直接使用数值) [Flags()] public enum KeyModifiers { None = 0, Alt = 1, Ctrl = 2, Shift = 4, WindowsKey = 8 }
心急小伙伴直接复制即可。
两个方法,第一个是注册热键,第二个是注销热键。一定要注销,不然热键会一直存在的。
在窗体中注册和注销
private void Form1_Load(object sender, EventArgs e){ MouseDLL.RegisterHotKey(Handle, 100, MouseDLL.KeyModifiers.None, Keys.F1); } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { MouseDLL.UnregisterHotKey(Handle, 100); } protected override void WndProc(ref Message m) { const int WM_HOTKEY = 0x0312; if (m.Msg == WM_HOTKEY && m.WParam.ToInt32() == 100) { timer1.Enabled = !timer1.Enabled; } base.WndProc(ref m); }
方法一,窗体的进入事件,此时注册热键。热键id是随便选的。
方法二,窗体的结束事件,此时注销热键。
方法三,重载窗体的消息通知,判断是否有按键按下。如果按下就打开定时器的开关。
提示,多线程不支持鼠标模拟。
4.模拟鼠标
最后就是重点了。模拟鼠标的按下效果。
这里有一个重点,鼠标的位置默认是从当前鼠标位置开始计算的,如果要自定义位置,最好是使用绝对坐标。
引用系统dll
const int MOUSEEVENTF_MOVE = 0x0001; //移动鼠标const int MOUSEEVENTF_LEFTDOWN = 0x0002; //模拟鼠标左键按下const int MOUSEEVENTF_LEFTUP = 0x0004; //模拟鼠标左键抬起const int MOUSEEVENTF_RIGHTDOWN = 0x0008; //模拟鼠标右键按下const int MOUSEEVENTF_RIGHTUP = 0x0010; //模拟鼠标右键抬起const int MOUSEEVENTF_MIDDLEDOWN = 0x0020; //模拟鼠标中键按下const int MOUSEEVENTF_MIDDLEUP = 0x0040; //模拟鼠标中键抬起const int MOUSEEVENTF_ABSOLUTE = 0x8000; //标示是否采用绝对坐标/// <summary>/// 鼠标事件/// </summary>/// <param name="dwFlags"></param>/// <param name="dx"></param>/// <param name="dy"></param>/// <param name="cButtons"></param>/// <param name="dwExtraInfo"></param>/// <returns></returns>[DllImport("user32.dll", SetLastError = true)]private static extern int mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);
下面写一个鼠标左键的例子。
/// <summary>/// 左键单击/// </summary>/// <param name="x"></param>/// <param name="y"></param>public static void mouse_click(int x = 0, int y = 0){ mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0); mouse_event(MOUSEEVENTF_LEFTUP, x, y, 0, 0);}
提示:里面的参数是可以合并的。比如
mouse_event(MOUSEEVENTF_LEFTDOWN|MOUSEEVENTF_LEFTUP, x, y, 0, 0);
最后的最后,把模拟左键的方法写在定时器里。同时设置定时器的频率。
private void timer1_Tick(object sender, EventArgs e){ MouseDLL.mouse_click(); } private void button1_Click(object sender, EventArgs e) { var tt = textBox1.Text; int timer = timer1.Interval; if (int.TryParse(tt, out timer)) { timer1.Interval = timer; } }
好了,现在只要运行这个程序就能够监听F1键,在按下F1键之后疯狂的点击鼠标左键。如果再次按下F1键,模拟点击就会停止了。
阅读全文
1 0
- 开发一个自动点击工具
- 鼠标自动点击工具
- android开发游记:textview超过长度点击展开自动滚动(在一个TextView中实现,不增加布局复杂度)
- android开发游记:textview超过长度点击展开自动滚动(在一个TextView中实现,不增加布局复杂度)
- 鼠标自动点击工具鼠标连点器鼠标定时自动点击使用方法
- 一个好的代码自动生成工具
- 一个自动生成类的工具
- [Swing]实现一个文本自动完成工具
- PyQT实现一个自动生成配置工具
- 写了一个自动部署的工具
- 一个很好的桌面自动测试工具
- 自动点击
- 推荐一个web开发工具
- Jquery 拓展一个点击按钮自动高亮的方法
- JS实现点击按钮自动增加一个单元格
- 移动开发数据库文件自动生成工具
- C# 开发站点自动登陆工具
- 考场自动安排工具开发手记
- ATOM进行右键添加
- 算法题100-快速售票系统的座位登记
- 阿里面试回来,想和Java程序员谈一谈
- Android bitmap讲解与实践
- 初学Web:计算机气质个人主页
- 开发一个自动点击工具
- R语言使用Apriori规则完成关联挖掘
- Poco库Timer定时器
- ARIMA差分自回归模型python代码
- EffectiveC++学习笔记-条款3
- 【每天一点linux】进程间通信--信号
- Ubuntu16.04 安装 Adouble Falsh Player
- 学习kotlin第13天_具体化的类型参数、内联属性、解构声明、集合
- 在Android Studio 和 Eclipse 的 git 插件操作 "代码提交"以及"代码冲突"