c#中设置快捷键

转载 2006年06月15日 08:44:00

要设置快捷键必须使用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);
}

C#全局热键设置与窗体热键设置实例

1、窗体热键 首先要设置主窗体KeyPreview为true,可直接在属性中进行设置, 或者在窗体加载中设置: this.KeyPreview = true; 然后添加窗体KeyDown事件,如...
  • cuoban
  • cuoban
  • 2016年02月26日 16:16
  • 3342

VIM自定义快捷键和添加注释

获取DoxygenToolkit.vim插件 下载地址:http://www.vim.org/scripts/script.php?script_id=987 将其拷贝到如下目录: ...
  • u011037149
  • u011037149
  • 2013年09月08日 21:24
  • 2066

Visual Studio C#常用快捷键(必看)

1.强迫智能感知:Ctrl+J。智能感知是Visual Studio最大的亮点之一,选择Visual Studio恐怕不会没有这个原因。 2.强迫显示参数信息:Ctrl-Shift-空格。这绝对是个...
  • qq_32521313
  • qq_32521313
  • 2016年09月07日 14:52
  • 2528

C#实现快捷键自定义设置

  • 2014年12月06日 21:27
  • 25KB
  • 下载

[C#]使用API 获取设置系统热键和快捷键

小颗豆的思路是:想要编一个小窗口程序,功能是打开某游戏后,按某个键然后鼠标自动重复点击游戏某个地方,再按某个键鼠标停止点击,这个问题涉及到全局键盘的捕获和释放,然后才是模拟鼠标(或键盘)按键 第一部...
  • cuoban
  • cuoban
  • 2016年02月26日 16:47
  • 454

C#设置WinForm快捷键

1、Alt+*(按钮快捷键) 按钮快捷键也为最常用快捷键,其设置也故为简单。在大家给button、label、menuStrip等其他控件的Text属性指定名称时,在其后面加上‘&’然后在加上一个指...
  • zzy7075
  • zzy7075
  • 2016年03月25日 17:44
  • 701

C#设置WinForm快捷键

转载:http://blog.sina.com.cn/s/blog_6427a6b50101el8x.html 1、Alt+*(按钮快捷键) 按钮快捷键也为最常用快捷键,其设置...
  • wyh0318
  • wyh0318
  • 2013年10月29日 11:40
  • 1084

C#设置WinForm快捷键

1、Alt+*(按钮快捷键) 按钮快捷键也为最常用快捷键,其设置也故为简单。在大家给button、label、menuStrip等其他控件的Text属性指定名称时,在其后面加上‘&’然后在加上一个指...
  • onlyzkg
  • onlyzkg
  • 2014年10月08日 09:26
  • 411

c#中设置快捷键

第一种:Alt + *(按钮快捷键)在大家给button、label、menuStrip等控件设置Text属性时在名字后边加&键名就可以了,比如button1.text= "确定(&O)"。就会有快捷...
  • a779812560
  • a779812560
  • 2011年02月14日 09:09
  • 513

C# 设置应用程序的快捷键

  • 2009年04月23日 14:11
  • 9KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c#中设置快捷键
举报原因:
原因补充:

(最多只允许输入30个字)