由于某种需要,需要做一个控制鼠标在屏幕乱点的程序,运用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, , Form1.KeyModifiers.Shift, Keys.S);
Form1.RegisterHotKey(Handle, , 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 :
          // 按钮点击
this.button1.PerformClick();
break;
case :
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, );
// 注销Id号为101的热键设定
  Form1.UnregisterHotKey(Handle, );
}

  通过以上的三步我们就可以轻松的去定义热键了。

结语

  • 受益,学会了如何在C#程序中定义热键

本站文章为宝宝巴士 SD.Team原创,转载务必在明显处注明:(作者官方网站:宝宝巴士)

转载自【宝宝巴士SuperDo团队】 原文链接: http://www.cnblogs.com/superdo/p/4544694.html

最新文章

  1. 前端开发工具vue.js开发实践总结
  2. Android成长日记-数据存储之SQLite[1]
  3. nginx location在配置中的优先级
  4. CoreLocation 下的定位跟踪测速
  5. Java调用摄像头截图
  6. 何为分类,UIImageView举例
  7. 下载PhpStorm并进行激活
  8. Asp .Net MVC4笔记之走进MVC
  9. php--isset()、is_null() 、empty()
  10. 微信小程序bug记录与解决
  11. 2018. first week now at home
  12. 只使用处理I/O的printDigit方法,编写一种方法一输出任意的double型量(可以是负的)
  13. (转)eclipse下配置tomcat7的几个重要问题,值得一看
  14. 为什么我们做分布式要使用Redis
  15. 项目使用Nuget,然后SVN checkout后显示缺少引用
  16. TaskController.java 20160712
  17. vue遇见better-scroll
  18. JDK JRE区别
  19. MATLAB搬移到别的电脑出现License Manager Error -9
  20. resteasy json

热门文章

  1. HDU - 6187 (最大生成树) 最小生成树
  2. 单源最短路径:Dijkstra算法(堆优化)
  3. RF(For 循环)
  4. andorid jar/库源码解析之Dagger/Dagger2
  5. Z - New Year Tree CodeForces - 620E 线段树 区间种类 bitset
  6. 吃零食 csust oj 贪心
  7. Oracle创建包
  8. MATLAB矩阵的表示
  9. maven项目变成web项目
  10. OpenStack黄金十年:我与OpenStack的故事