注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

More Than Programmer

do more and more,beyond programmer... ..

 
 
 

日志

 
 
关于我

每天进步一点,让自己活得充实!

网易考拉推荐
 
 

C#为程序设置快捷键(参考)  

2008-11-26 10:28:02|  分类: C# |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

  最近找了一些资料,是讲在C#中设置快捷键运行方法或程序的,要设置快捷键必须使用user32.dll下面的两个方法。

BOOL RegisterHotKey(

 HWND hWnd,

 int id,

 UINT fsModifiers,

 UINT vk

);

  和

BOOL UnregisterHotKey(

 HWND hWnd,

 int id

);

  转换成C#代码,那么首先就要引用命名空间System.Runtime.InteropServices;来加载非托管类user32.dll。于是有了:

[DllImport("user32.dll", SetLastError=true)]

public static extern bool RegisterHotKey(

 IntPtr hWnd, // handle to window

 int id, // hot key identifier

 KeyModifiers fsModifiers, // key-modifier options

 Keys vk // virtual-key code

);

[DllImport("user32.dll", SetLastError=true)]

public static extern bool UnregisterHotKey(

 IntPtr hWnd, // handle to window

 int id // hot key identifier

);

[Flags()]

public enum KeyModifiers

{

 None = 0,

 Alt = 1,

 Control = 2,

 Shift = 4,

 Windows = 8

}

  这是注册和卸载全局快捷键的方法,那么我们只需要在Form_Load的时候加上注册快捷键的语句,在FormClosing的时候卸载全局快捷键。同时,为了保证剪贴板的内容不受到其他程序调用剪贴板的干扰,在Form_Load的时候,我先将剪贴板里面的内容清空。

  于是有了:

private void Form1_Load(object sender, System.EventArgs e)

{

 label2.AutoSize = true;

 Clipboard.Clear();//先清空剪贴板防止剪贴板里面先复制了其他内容

 RegisterHotKey(Handle, 100, 0, Keys.F10);

}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)

{

 UnregisterHotKey(Handle, 100);//卸载快捷键

}

  那么我们在别的窗口,怎么让按了快捷键以后调用我的主过程ProcessHotkey()呢?

  那么我们就必须重写WndProc()方法,通过监视系统消息,来调用过程:

protected override void WndProc(ref Message m)//监视Windows消息

{

 const int WM_HOTKEY = 0x0312;//按快捷键

 switch (m.Msg)

 {

  case WM_HOTKEY:

   ProcessHotkey();//调用主处理程序

   break;

 }

 base.WndProc(ref m);

}

  这样我的程序就完成了

  评论这张
 
阅读(804)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018