[工具-005] C#如何绑定HotKey
2015-06-01 19:09
741 查看
由于某种需要,需要做一个控制鼠标在屏幕乱点的程序,运用C#的
[DllImport("user32.dll")]
private static extern int mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);
这个方法,我们可以实现控制鼠标的移动,单双击等功能。
但是实现之后你会发现当你启动了屏幕测试的时候,鼠标已经不受你的控制,因为鼠标到处乱跑,这个时候我想到了我们需要一个HotKey,类似于Ctrl + C 和 Ctrl + V这样的功能来让程序停止下来。下面就讲讲具体的实现方式。
我的应用场景是WinForm,我们需要在窗口激活的时候去定义HotKey
然后获取到注册了热键之后,我们要怎么去注册热键的事件呢,我们需要重载WndProc方法
在程序关闭之后关闭热键,我们可以在Form_Closing事件进行关闭
通过以上的三步我们就可以轻松的去定义热键了。
结语
受益,学会了如何在C#程序中定义热键
本站文章为 宝宝巴士 SD.Team 原创,转载务必在明显处注明:(作者官方网站: 宝宝巴士 )
转载自【宝宝巴士SuperDo团队】 原文链接: /article/6669062.html
[DllImport("user32.dll")]
private static extern int mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);
这个方法,我们可以实现控制鼠标的移动,单双击等功能。
但是实现之后你会发现当你启动了屏幕测试的时候,鼠标已经不受你的控制,因为鼠标到处乱跑,这个时候我想到了我们需要一个HotKey,类似于Ctrl + C 和 Ctrl + V这样的功能来让程序停止下来。下面就讲讲具体的实现方式。
我的应用场景是WinForm,我们需要在窗口激活的时候去定义HotKey
private void Form1_Activated(object sender, EventArgs e) { // 注册热键Ctrl+B,Id号为101。HotKey.KeyModifiers.Ctrl也可以直接使用数字2来表示。 Form1.RegisterHotKey(Handle, 100, Form1.KeyModifiers.Shift, Keys.S); Form1.RegisterHotKey(Handle, 101, Form1.KeyModifiers.Shift, Keys.E); }
然后获取到注册了热键之后,我们要怎么去注册热键的事件呢,我们需要重载WndProc方法
protected override void WndProc(ref Message m) { const int WM_HOTKEY = 0x0312; // 按快捷键 switch (m.Msg) { case WM_HOTKEY: switch (m.WParam.ToInt32()) { case 100: // 按钮点击 this.button1.PerformClick(); break; case 101: this.runFlag = false; if (clickThread != null) { clickThread.Abort(); } break; } break; } base.WndProc(ref m); }
在程序关闭之后关闭热键,我们可以在Form_Closing事件进行关闭
private void Form1_FormClosing(object sender, FormClosingEventArgs e) { // 注销Id号为100的热键设定 Form1.UnregisterHotKey(Handle, 100); // 注销Id号为101的热键设定 Form1.UnregisterHotKey(Handle, 101); }
通过以上的三步我们就可以轻松的去定义热键了。
结语
受益,学会了如何在C#程序中定义热键
本站文章为 宝宝巴士 SD.Team 原创,转载务必在明显处注明:(作者官方网站: 宝宝巴士 )
转载自【宝宝巴士SuperDo团队】 原文链接: /article/6669062.html
相关文章推荐
- C#泛型-使用委托的Sort排序方法
- C# 加密解密(DES,3DES,MD5,Base64) 类
- C# 导出标准格式的Excel 可用迅雷下载
- C# 获取客户端IP
- C# 获取系统当前时间 长格式
- C# 字符串截取
- C#正则表达式语法规则详解
- c#自定义类型的转换方式operator,以及implicit(隐式)和explicit (显示)声明的区别
- C# 操作XML 如果不存在创建 存在直接追加
- C# treeview右键菜单 设置技巧
- C# Invoke
- C# 根据时间创建文件夹
- C# Rows.Remove() 和 DataRow.Delete() 的区别
- C#:代表(delegate)和事件(event) (转)
- C# DataAdapter.Update() 无法更新数据表中删除的数据行
- 通过configSource提高web.config配置灵活性
- mongo DB for C#
- c#的DateTime.Now函数详解
- C# 中引用dll类库时 “不可访问,因为它受保护级别限制”
- c# 调用打印机