您的位置:程序门 -> vc/mfc -> 进程/线程/dll



利用键盘钩子改变按键消息为什么不成功?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


利用键盘钩子改变按键消息为什么不成功?[无满意答案结贴,结贴人:pphpp]
发表于:2007-10-09 16:52:36 楼主
写了个键盘钩子。
想改变一些按键的消息。
如下是一段:

//   键盘钩子函数
lresult   callback   keyhookproc(int   ncode,   wparam   wparam,   lparam   lparam)
{
       
if   (   wparam==vk_a)
wparam=vk_z;
                return   ::callnexthookex(g_hhook,   ncode,   wparam,   lparam);
}

按这个编译下来有三个错误:

c:\新建文件夹\09keyhooklib\keyhooklib.cpp(45)   :   error   c2065:   'vk_a'   :   undeclared   identifier
c:\新建文件夹\09keyhooklib\keyhooklib.cpp(45)   :   warning   c4018:   '=='   :   signed/unsigned   mismatch
c:\新建文件夹\09keyhooklib\keyhooklib.cpp(46)   :   error   c2065:   'vk_z'   :   undeclared   identifier


为什么。?
发表于:2007-10-09 17:29:081楼 得分:0
应该改lparam
发表于:2007-10-09 17:39:402楼 得分:0
你以为这是java程序吗?windows   sdk里哪里有vk_a、vk_b的定义


字母数字的虚拟键值就是asc码
==   'a'
      =   'b'
发表于:2007-10-10 02:01:383楼 得分:0
呵呵前两楼的说得都很对!!
发表于:2007-10-10 19:38:104楼 得分:0
呜,呜………………
lresult   callback   keyhookproc(int   ncode,   wparam   wparam,   lparam   lparam)  
{  
         
if   (   lparam=='a')  
lparam='z';  
                return   ::callnexthookex(g_hhook,   ncode,   wparam,   lparam);  
}  

这样改行了吗
发表于:2007-10-10 20:14:075楼 得分:0
可以我编译通过了测试时却没有成功。
我按a,得到的记事本中得到的还是a,z还是z。这是为什么呀?
发表于:2007-10-11 16:17:246楼 得分:0
哇哇,呜哇,
怎么没有人帮帮我呀。
为什么呀
发表于:2007-10-13 16:09:287楼 得分:0
快点告诉我呀。

这个对高手来说不是很难呀。
发表于:2007-10-13 17:27:278楼 得分:0
  return   ::callnexthookex(g_hhook,   ncode,   wparam,   lparam);  
=======================
这句的目的是将消息发给下一个钩子,并不是将消息改发给你的程序,实际你的要求很难做到,你可以丢一个消息,但是很难改消息
发表于:2007-10-15 16:19:109楼 得分:0
我还是不明白呀。
我明明改变了消息。
可是消息为什么就不能按我们的改变而改变呢。

在一些书上说的是:我们可以丢去或改变某个消息。

为什么呢。
我不明白。
发表于:2007-12-04 21:20:2210楼 得分:0
帮你顶顶!


快速检索

最新资讯
热门点击