加载中…
个人资料
正青
正青
  • 博客等级:
  • 博客积分:0
  • 博客访问:5,789
  • 关注人气:0
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

C# 如何实现热键注册 RegisterHotKey

(2009-01-03 21:41:23)
标签:

c

registerhotkey

键盘后台响应

热键注册

杂谈

分类: c#

RegisterHotKey(this.Handle, 247696411, 0, (UInt32)Keys.***);

http://baike.baidu.com/view/1080084.html?tp=0_10 这里有RegisterHotKey
的介绍

RegisterHotKey 函数功能:该函数定义一个系统范围的热键。
函数原型:BOOL RegisterHotKey(HWND hWnd,intid,UINT fsModifiers,UINT vk);
参数:
hWnd:接收热键产生WM_HOTKEY消息的窗口句柄。若该参数NULL,传递给调用线程的WM_HOTKEY消息必须在消息循环中中进行处理。
id:定义热键的标识符。调用线程中的其他热键不能使用同样的标识符。应用功能程序必须定义一个0X0000-0xBFFF范围的值。一个共享的动态链接库(DLL)必须定义一个0xC000-0xFFFF范围的值伯GlobalAddAtom函数返回该范围)。为了避免与其他动态链接库定义的热键冲突,一个DLL必须使用GlobalAddAtom函数获得热键的标识符。
fsModifoers:定义为了产生WM_HOTKEY消息而必须与由nVirtKey参数定义的键一起按下的键。该参数可以是如下值的组合:
MOD_ALT:按下的可以是任一Alt键。MOD_CONTROL:按下的可以是任一Ctrl键。
MOD_SHIFT:按下的可以是任一Shift键。
MOD_WIN:按下的可以是任一Windows按键。这些键可以用Microsoft Windows日志记录下来。
vk:定义热键的虚拟键码。
返回值:若函数调用成功,返回一个非O值。若函数调用失败,则返回值为0。若要获得更多的错误信息,可以调用GetLastError函数。

 

API别忘了 using System.Runtime.InteropServices;


[DllImport("user32.dll")]
public static extern UInt32 RegisterHotKey(IntPtr hWnd, UInt32 id, UInt32 fsModifiers, UInt32 vk); //API

public Form1()
{
InitializeComponent();
RegisterHotKey(this.Handle, 247696411, 0, (UInt32)Keys.F10); //注册热键
} 阅读
//重写消息循环
protected override void WndProc(ref Message m)
{
const int WM_HOTKEY = 0x0312;
// m.WParam.ToInt32() 要和 注册热键时的第2个参数一样
if (m.Msg == WM_HOTKEY && m.WParam.ToInt32() == 247696411) //判断热键
{
//写上你的代码
}

base.WndProc(ref m);
}


写上代码后 只要 在程序运行时按F10就可以触发热键更改按键可以在 注册时改

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有