全局钩子是必须用DLL导出函数做的!

全局钩子是必须用DLL导出函数做的!
搜索但是线程钩子是可以做在程序里的!
当全局钩子触发的时候,系统去DLL里寻找相关的触发函数!
而不是在程序内部寻找的!所以假如你把钩子函数写在
自己的程序内部,只能在你的程序是活动窗口的时候,消息才
被触发的!但是你让程序失去输入焦点,钩子函数就会失效的!
我很理解LZ的想法,我当初做全局钩子,也是不想要个DLL库的,觉得
那很不美观的!但是Windows就是这样,她规定了的!没办法改的!
假如你想捕捉很少的键盘消息,可以用注册热键的方法的!
注册函数BOOL RegisterHotKey(HWND hWnd,intid,UINT fsModifiers,UINT vk);
当你注册个热键的时候,热键一触发,就会给你设定的窗口发送消息的!
参数:
hWnd是接受热键触发消息的窗口

id:是热键的标识符,为了使热键不冲突!

fsModifoers是热键控键的组成部分!比如说你想把热键设置成
ALT+S,那fsModifoers就是ALT部分,她总共有3个标识符
MOD_ALT
MOD_SHIFT
MOD_WIN
vk是除了控制键其他的键!
假如想截获多个控制键,比如ALT+SHIFT+S fsModifoers就可以写成
MOD_ALT|MOD_SHIFT, vk写成s;

 

转:http://zhidao.baidu.com/link?url=XadjMphI33fM2jSE6vJWaz645rHz9WVvzKTe7RWAWMaHSDOBLrwSri0PsxaAkmSXPMduv2dpoakr-BnBcCjDKq

posted @ 2014-05-22 11:17  stma  阅读(335)  评论(0)    收藏  举报