c#中设置快捷键

最爱国安year

最爱国安year

2016-02-19 11:56

图老师小编精心整理的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);
展开更多 50%)
分享

猜你喜欢

c#中设置快捷键

编程语言 网络编程
c#中设置快捷键

Word中的样式设置快捷键

电脑入门
Word中的样式设置快捷键

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

QQ快捷键如何设置?

电脑入门
QQ快捷键如何设置?

电脑快捷键怎么设置

快捷键 电脑
电脑快捷键怎么设置

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

CORELDRAW中快捷键的应用和设置

CorelDRAW
CORELDRAW中快捷键的应用和设置

怎样为Word中的样式设置快捷键

电脑入门
怎样为Word中的样式设置快捷键

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

让Excel2007隐私问题警告对话框不再显示

让Excel2007隐私问题警告对话框不再显示

学习C#静态函数及变量的一个精典例子与代码

学习C#静态函数及变量的一个精典例子与代码
下拉加载更多内容 ↓