手机
当前位置:查字典教程网 >编程开发 >C#教程 >c#中设置快捷键
c#中设置快捷键
摘要:最近找了一些资料,是讲在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# 设置系统日期格式的方法

c# 类型转换

c#与mysql的连接

c#.net 常用函数和方法集

C#中控制远程计算机的服务的方法

c#中抽象类和接口的详细介绍

C#中方法的详细介绍

C#中的where泛型约束介绍

再议C#中的装箱与拆箱的问题详解

C#中计算时间差中的小数问题解决

精品推荐
分类导航