[工具-005] C#如何绑定HotKey

  由于某种需要,需要做一个控制鼠标在屏幕乱点的程序,运用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

 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团队】 原文链接: http://www.cnblogs.com/superdo/p/4544694.html

时间: 2024-10-05 02:39:03

[工具-005] C#如何绑定HotKey的相关文章

.NET Framework 工具

https://msdn.microsoft.com/zh-cn/library/ms299153(VS.80).aspx SDK 命令提示 程序集链接器 (Al.exe) ASP.NET 编译工具 (Aspnet_compiler.exe) ASP.NET 浏览器注册工具 (Aspnet_regbrowsers.exe) ASP.NET IIS 注册工具 (Aspnet_regiis.exe) ASP.NET SQL Server 注册工具 (Aspnet_regsql.exe) Window

mysql几种性能测试的工具使用

mysql几种性能测试的工具使用 近期由于要比较mysql及其分支mariadb, percona的性能,了解了几个这方面的工具,包括:mysqlslap sysbench tpcc-mysql,做一个整理,备忘,分享 1.mysqlslap 安装:简单,装了mysql就有了 作用:模拟并发测试数据库性能. 优点:简单,容易使用. 不足:不能指定生成的数据规模,测试过程不清楚针对十万级还是百万级数据做的测试,感觉不太适合做综合测试,比较适合针对既有数据库,对单个sql进行优化的测试. 使用方法:

Java 报表工具

1.报表工具基本功能 报表工具一般提供一下功能: 支持多种数据源,而且数据源可配置. 支持脚本式的样式定义,一般是基于XML的,可灵活修改,一般提供样式编辑器.一般支持基于打印的样式定义,支持报表头尾.页面头尾.分组等概念. 将数据源和样式定义,输入到报表引擎,可输出为多种格式,包括PDF.EXCEL等. 2.报表工具的使用 从报表工具的基本功能来看,使用报表工具,核心是两个,一个是数据源的定义,一个是样式的定义. 数据源的定义比较简单,一般是数据库,按照报表工具要求的配置好连接池,依照业务需求

mysql几种性能测试的工具

mysql几种性能测试的工具使用 一.mysqlslap 安装:装了mysql就有了 作用:模拟并发测试数据库性能. 优点:简单,容易使用. 不足:不能指定生成的数据规模,测试过程不清楚针对十万级还是百万级数据做的测试,感觉不太适合做综合测试,比较适合针对既有数据库,对单个sql进行优化的测试. 使用方法: 可以使用mysqlslap --help来显示使用方法: Default options are read from the following files in the given ord

删除 Intel HD Graphics 显卡工具的全局快捷键

Intel的内置显卡工具总是注册全局的快捷键,而且还是常用的(比如 Sublime Text, PyCharm等工具的默认按键绑定),如下: Ctrl + Shift + Up Ctrl + Shift + Down Ctrl + Shift + Left Ctrl + Shift + Right 这些快捷键都是由 igfxHK.exe 注册的,虽然可以在任务栏中点击禁用快捷键,但是由于快捷键是全局注册,其它应用程序仍然不能使用这些快捷键. 虽然使用 taskkill /IM igfxHK.ex

iOS开发中的错误整理,关于用绑定Tag取控件的注意事项,有时候不绑定也是个错!

如图:红色框中是个自定义的导航工具条titlesView(没有绑定Tag),工具条中有五个按钮(按钮绑定了Tag)以及一个红色的指示器indicatorView(没有绑定Tag),下面的蓝色是可以滚动的scrollView,拖动scrollView,红色指示器会滚到对应按钮的下面,并且按钮呈红色显示. 在scrollView的代理方法scrollViewDidEndDecelerating:中通过 获得按钮首先注意的一点是,当指定的Tag为0时,会默认首先拿到的是调用这个方法的控件,也就是父控件

安装使用sdcv并改良在sdcv在vim下的使用体验

注:改良vim体验的直接看最后一章 一.什么是sdcv 终端词典sdcv,顾名思义,是在终端下使用的词典工具. 我对它所说的终端的理解是:任意可以使用它的地方,可以是Shell本身,也可以是某个软件内部. 二.为什么选择它 1.作为工具,他并不绑定字典,便于更换和多字典同时查询. 2.并不依赖GUI,通用性强.稳定性强. 3.配合各种可以调用Shell命令的软件,使用方便. 三.sdcv安装 利用安装命令安装sdcv即可,大多软件库都有 例子如下: CentOS, RHEL, Fedora (n

史上最全的机器学习资料(上) 转

转自:http://www.afenxi.com/post/18593 摘要: 机器学习牵涉的编程语言十分之广,包括了MATLAB.Python.Clojure.Ruby等等.为了让开发者更加广泛.深入地了解机器学习,云栖社区组织翻译了GitHub Awesome Machine Learning 资源,涵盖24种编程语言的机器学习的框架.库以及其他相关资料. 机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论.统计学.逼近论.凸分析.算法复杂度理论等多门学科.

Windows Server 2012部署遇到的问题

一.安装IIS提示"服务器管理器WinRM插件可能已损坏或丢失" 解决方案: 1.开启WinRM服务,添加ip监听 在服务中查看WinRM服务是否开启,如果没有开启则把该服务开启,然后打开命令提示符,输入netsh http add iplisten 127.0.0.1,监听本机ip地址,再重试 注意: 1)netsh http add iplisten 127.0.0.1会让iis只监听内网地址,这会导致外网地址无法访问iis,所以这时候外网telnet服务器的80端口是不通的,要想