c#中设置快捷键

最近找了一些资料,是讲在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);
}

(0)

相关推荐

  • android开发中常用的Eclipse快捷键详细整理

    Eclipse快捷键-方便查找,呵呵,记性不好 行注释/销注释 Ctrl+/ 块注释/销注释/XML注释 Ctrl+Shift+/ Ctrl+Shift+\ 查找 查找替换 Ctrl+H Ctrl+F 查找下一个/往回找 Ctrl+K Ctrl+Shift+K 跳到某行 Ctrl+L,哈用惯了Editplus,不时会敲下Ctrl+G, 查找当前元素的声明 Ctrl+G 查找当前元素的所有引用 Ctrl+Shift+G 重新组织Import Ctrl+Shift+O,能帮你一次去掉所有未使用的Im

  • WinForm中快捷键与组合按键的设置方法

    第一种方法..代码复杂,操作简单的快捷键 新建一个空白窗体 每个窗体都有这样3个事件:KeyDown.KeyPress.KeyUp,KeyDown和KeyPress都是按键按下事件,但KeyDown用的是KeyCode跟键盘各个按键相对应,它对应Keys枚举,用起来比较方便:而KeyPress用的是KeyChar,这个就要找ASC II编码了,不方便.KeyUp是按键弹起事件,不常用,因此我们使用KeyDown事件来设置窗体的快捷键,双击该事件后的空白生成代码,首先我们设置单个按键,让它按下F1

  • C#实现快捷键的几种常用方法汇总

    快捷键是很多软件的常用功能,本文实例讲解了三种方法来实现C# button快捷键,如Alt + *(按钮快捷键),Ctrl+*及其他组合键等.现详述如下: 一. C# button快捷键之第一种:Alt + *(按钮快捷键) 在大家给button.label.menuStrip等控件设置Text属性时在名字后边加&键名就可以了,比如button1.text= "确定(&O)".就会有快捷键了,这时候按Alt+O就可以执行按钮单击事件. 二.C# button快捷键之第二

  • winform绑定快捷键的方法

    本文实例讲述了winform绑定快捷键的方法.分享给大家供大家参考.具体分析如下: 第一种:Alt + *(按钮快捷键) 在大家给button.label.menuStrip等控件设置Text属性时在名字后边加&键名就可以了,比如button1.text= "确定(&O)".就会有快捷键了,这时候按Alt+O就可以执行按钮单击事件. 第二种:Ctrl+*及其他组合键 在WinForm中设置要使用组合键的窗体的KeyPreview(向窗体注册键盘事件)属性为True; 然

  • C# WinForm中实现快捷键自定义设置实例

    本文源码下载:http://xiazai.jb51.net/201501/tools/cs-key-setting.rar 项目开发过程中,需要实现类似有道词典的软件设置中的自定义快捷键功能,如下图所示: 当我们相继按下Ctrl+Alt+M的时候,软件就会自动将快捷键显示在文本框中. 最终的效果如下图所示: 核心代码如下所示: 复制代码 代码如下: private void keyDown(object sender, KeyEventArgs e) {     StringBuilder ke

  • javascript onkeydown实现键盘快捷键控制页面

    IE only的鼠标左右键控制上一页下一页<script type="text/javascript"> <!-- var preview_page = "14671.html"; var next_page = "14675.html"; var index_page = "index.html"; var article_id = "305"; var chapter_id = &qu

  • CS 1.5 键盘基本操作快捷键

    W上 A左 S下 D右 Q换枪 R换子弹 F灯 G扔枪 B买枪 O手雷和护具 T喷图 N夜视镜 K/TAB说话 Y打字 U单方打字 C/X/Z各种指令 ,长枪子弹 .手枪子弹 还有就是小键盘可以自己设置的 可能还不太全自己慢慢摸去 [B]进入购买菜单 [O]直接进入装备购买菜单 [,]自动为当前武器购买一发弹药 [.]自动为备用武器购买一发弹药 [M]改变身份.你将死去,直到下一回合开始 [Z]调出一组命令.选择相应的号码以发出不同的信息指令 [X]调出一组命令.选择相应的号码以发出不同的信息指

  • js keycode快捷键大全 并附有简单使用说明

    复制代码 代码如下: keycode 8 = BackSpace BackSpace keycode 9 = Tab Tab keycode 12 = Clear keycode 13 = Enter keycode 16 = Shift_L keycode 17 = Control_L keycode 18 = Alt_L keycode 19 = Pause keycode 20 = Caps_Lock keycode 27 = Escape Escape keycode 32 = spac

  • java,Android:在eclipse中的快捷键(经典收藏)

    1.选中你要加注释的区域,用ctrl+shift+C 会加上//注释 2.先把你要注释的器材选中,用shit+ctrl+/ 会加上/* */注释 3.要批改在eclispe中的号令的快捷键体式格式我们只需进入windows -> preference -> General -> key设置就行了(转) 补充:选中要加注释的区域,ctrl+/ 会加//注释 2010/09/13 选中后,ctrl+shift+\,去掉选中项目组的注释 附myeclipse中的所有快捷键列表: Ctrl+1

  • cmd 命令行下复制、粘贴的快捷键

    嗯,从最开始说吧,操作系统:XP,准备工作: 1.单击左下角"开始"菜单,选择"运行",输入"cmd". 2.在弹出的cmd窗口的标题栏上点击"右键",选择"属性". 3.在弹出的对话框中选择"选项"这个选项卡,在"编辑选项"区域中勾选"快速编辑模式",如图所示,然后"确定". 4.在弹出的选择框中根据自己需要选择,一个是只对当

  • C# WinForm快捷键设置技巧

    1.Alt+*(按钮快捷键) 按钮快捷键也为最常用快捷键,其设置也故为简单.在大家给button.label.menuStrip等其他控件的Text属性指定名称时,在其后面加上'&'然后在加上一个指定字母即可.如:确定(&D),(Alt+D)调用. 如指定多个字母,则第一个为快捷键.如:确定(&OK),(Alt+O)调用;文件(&Fill),(Alt+F)调用. 2.Ctrl+*及其他组合键 把 Form 的 KeyPreview 属性设为 True 使用Modifiers

  • 在Winform和WPF中注册全局快捷键实现思路及代码

    快捷键辅助类 复制代码 代码如下: class HotKey { /// <summary> /// 如果函数执行成功,返回值不为0. /// 如果函数执行失败,返回值为0.要得到扩展错误信息,调用GetLastError..NET方法:Marshal.GetLastWin32Error() /// </summary> /// <param name="hWnd">要定义热键的窗口的句柄</param> /// <param na

  • JavaScript 快捷键设置实现代码

    屏蔽Alt+F4等快捷键: 复制代码 代码如下: <script> function KeyDown(){ //屏蔽鼠标右键.Ctrl+n.shift+F10.F5刷新.退格键 //alert("ASCII代码是:"+event.keyCode); if ((window.event.altKey)&& ((window.event.keyCode==37)|| //屏蔽 Alt+ 方向键 ← (window.event.keyCode==39))){ //

随机推荐