c#中设置快捷键_C#教程-查字典教程网
c#中设置快捷键
c#中设置快捷键
发布时间:2016-12-28 来源:查字典编辑
摘要:最近找了一些资料,是讲在C#中设置快捷键运行方法或程序的要设置快捷键必须使用user32.dll下面的两个方法。BOOLRegisterHo...

最近找了一些资料,是讲在C#中设置快捷键运行方法或程序的

要设置快捷键必须使用user32.dll下面的两个方法。

BOOLRegisterHotKey(

HWNDhWnd,

intid,

UINTfsModifiers,

UINTvk

);

BOOLUnregisterHotKey(

HWNDhWnd,

intid

);

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

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

publicstaticexternboolRegisterHotKey(

IntPtrhWnd,//handletowindow

intid,//hotkeyidentifier

KeyModifiersfsModifiers,//key-modifieroptions

Keysvk//virtual-keycode

);

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

publicstaticexternboolUnregisterHotKey(

IntPtrhWnd,//handletowindow

intid//hotkeyidentifier

);

[Flags()]

publicenumKeyModifiers

{

None=0,

Alt=1,

Control=2,

Shift=4,

Windows=8

}

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

于是有了:

privatevoidForm1_Load(objectsender,System.EventArgse)

{

label2.AutoSize=true;

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

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

}

privatevoidForm1_FormClosing(objectsender,FormClosingEventArgse)

{

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

}

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

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

protectedoverridevoidWndProc(refMessagem)//监视Windows消息

{

constintWM_HOTKEY=0x0312;//按快捷键

switch(m.Msg)

{

caseWM_HOTKEY:

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

break;

}

base.WndProc(refm);

}

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新C#教程学习
    热门C#教程学习
    编程开发子分类