为什么我的钩子程序钩到win键并return 1后开始菜单照样弹出????(100分)

  • 主题发起人 主题发起人 热血
  • 开始时间 开始时间
自己仔细看了一下。。在按win键时。。是开始菜单先弹出。。然后是我的程序有反应<br>说明在系统钩子中,系统比钩子程序先得到通知.那样对一些系统按键钩子就没有作用了<br>我想了两个办法。。一是用vxd来实现。二是用欺骗系统的方法.先用systemparametersinfo<br>来弄掉系统键.再在程序里面模拟系统按键的方法。。就是向系统发送按alt+tab等按键<br>消息。。不知可不可以。。
 
问题来了。。怎么模拟alt+tab和ctrl+alt+del键按下。。????
 
呵呵,我对这个感兴趣,但不知道为什么要这样做?<br>我不了解,关注!<br>
 
看你是什么钩子了, 钩键盘当然没用, 因为这些键同时产生WM_COMMAND或者<br>WM_SYSCOMMAND消息, 而且这些消息是Send到程序的, 而键盘消息是Post到程<br>序的.
 
Another_eYes那要钩什么??钩消息???send和post有什么不同??<br>另外你说的wm_command和键盘消息有什么不同??
 
没辙. 要钩也是钩WH_CALLWNDPROC, 不过在那里只能看不能改.<br>WM_COMMAND传递MENU选了哪个ITEM或者某个热键被触发或者其他控件发的<br>通知.<br>WM_SYSCOMMAND传递的是用户选择了哪个SYSTEM MENU ITEM(就是开始菜单<br>里的东西), 或者窗口最大化最小化.<br>PostMessage只是将消息复制到窗口的消息队列里, 等窗口有工夫时再处理.<br>SendMessage是直接调用窗口的WindowProc进行处理(不进消息队列), 也就是说, 如<br>果是SendMessage发送的消息不会等待窗口有空时再响应, 它马上就让窗口直接处理<br>这个消息(就象子程序调用).
 
哦, 也许我搞错了, WM_SYSCOMMAND也是PostMessage到窗口的(根据平时使用<br>windows的体验). 那样的话就容易了, 钩住WH_GETMESSAGE,判断消息种类并进行<br>相应处理即可.
 
那钩到又如何??问题是怎么让这个消息失效。不让它传下去。。
 
嘿嘿。。我自己用vxd把它搞定了。。。<br>见者有分。。。
 
见者有分,我也蹭点^^
 
不是吧!!*_*
 
我也要!@_@
 
多人接受答案了。
 
你是怎么用vxd搞定的?能发我源代码吗?wh1000@163.com
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部