文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>C#热键

C#热键

时间:2011-02-05  来源:nicesoft

 用:

代码
private void Form1_KeyDown(object sender, KeyEventArgs e)      
{
if (e.Control && e.KeyCode == Keys.A)
{
btnTest_Click(
this, EventArgs.Empty);
}
}

方法固然简单有效!但是有没有发现一个问题?那就是当程序失去焦点的时候这个热键(快捷键)就不管用了!那怎么办呢?其实办法还

是有的!又要用到Win32API了这次用:RegisterHotKey 和 UnregisterHotKey这2个函数的意思不需要我解释吧! 看表面意思

就知道了 注册热键和注销热键

 

代码
        public class HotKey//如果函数执行成功,返回值不为0。//如果函数执行失败,返回值为0。要得到扩展错误信息,调用GetLastError。
{
[DllImportAttribute(
"user32.dll", EntryPoint = "RegisterHotKey")]
public static extern bool RegisterHotKey
(
IntPtr hWnd,
//要注册热键的窗口句柄
int id, //热键编号 定义热键ID(不能与其它ID重复)
int fsModifiers, //特殊键如:Ctrl,Alt,Shift,Window //标识热键是否在按Alt、Ctrl、Shift、Windows等键时才会生效
int vk //一般键如:A B C F1,F2 等 定义热键的内容
);
[DllImportAttribute(
"user32.dll", EntryPoint = "UnregisterHotKey")]
public static extern bool UnregisterHotKey
(
IntPtr hWnd,
//要取消热键的窗口的句柄
int id //热键编号上面注册热键的编号 要取消热键的ID
);
[Flags()]
//附上Flags特性后,用该枚举变量是既可以象整数一样进行按位的“|”或者按位的“&”操作
public enum MyKeys
{
None
= 0,
Alt
= 1,
Ctrl
= 2,
Shift
= 4,
Win
= 8
}
public const int WM_HOTKEY = 0x312;
}

用RegisterHotKey注册的热键即时在失去焦点的情况下也可以有效!

所有实现代码如下:

 using System.Runtime.InteropServices;

 

代码
        private void Form1_Load(object sender, EventArgs e)
{
HotKey.RegisterHotKey(
this.Handle, 200, (int)HotKey.MyKeys.Alt, (int)Keys.A); //注册热键Alt+A
//HotKey.RegisterHotKey(this.Handle, 200, (int)HotKey.MyKeys.Ctrl | (int)HotKey.MyKeys.Alt, (int)Keys.A); //注册热键Ctrl+Alt+A
//HotKey.RegisterHotKey(this.Handle, 200, (int)HotKey.MyKeys.None, (int)Keys.F2);// 注册热键F2
}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
HotKey.UnregisterHotKey(
this.Handle, 200); //注销热键
}

private void btnTest_Click(object sender, EventArgs e)
{
MessageBox.Show(
"btnTest单击事件被触发!");
}

protected override void WndProc(ref Message m)
{
if (m.Msg == HotKey.WM_HOTKEY)
{
switch (m.WParam.ToInt32())
{
case 200:
btnTest_Click(
this, EventArgs.Empty);
break;
}
}
base.WndProc(ref m);
}

 

 

 

相关阅读 更多 +
排行榜 更多 +
找茬脑洞的世界安卓版

找茬脑洞的世界安卓版

休闲益智 下载
滑板英雄跑酷2手游

滑板英雄跑酷2手游

休闲益智 下载
披萨对对看下载

披萨对对看下载

休闲益智 下载