又一个钩子问题:想用WH_SYSMSGFILTER监控系统输入,但是...(200分)

  • 主题发起人 主题发起人 flyhi
  • 开始时间 开始时间
F

flyhi

Unregistered / Unconfirmed
GUEST, unregistred user!
&nbsp;我想监控系统的输入,于是想用钩子函数中的WH_SYSMSGFILTER来截取,<br>但是回调函数中的截取值什么都有(有鼠标位置,接受鼠标窗口..)但是没有<br>输入的字符值.那位能指点一番.<br>&nbsp; 另外:我不能在回调函数中设断点,设了也没有用,虽然那个断点处有被执行.<br>而相同结构的另一个鼠标钩子的回调函数却能被设断点.(程序是根据钱达智<br>先生的范例改写而成.)
 
&gt;&gt;输入的字符值<br><br>if PMSG(lParam).message=WM_CHAR then <br>此时PMSG(lParam).wParam就是呀。<br><br>为什么不用键盘Hook?
 
为什么不用WH——KEYBOARD HOOK,它截获的都是输入。
 
为什么不能设断点呢,这样程序变得很难调试
 
WH_SYSMSGFILTER的说明是这样的:<br>The SysMsgProc hook procedure is a library-defined callback function <br>the system calls after an input event occurs in a dialog box, <br>message box, menu, or scroll bar, but before the message generated <br>by the input event is processed. The hook procedure can monitor <br>messages for any dialog box, message box, menu, or scroll bar in the <br>system.<br>但是它对IE的滚动条和地址输入框就没有反应.但是对比如netscape的滚动条和<br>地址输入框就有反应.可能IE的地址输入框输入事件被其他方法(除了wh_keyboard)<br>处理了.那位大侠知道呢?
 
我发现不能设断点的原因是WH_SYSMSGFILTER,当我将那个可以设断点的<br>鼠标hook中的wh_mouse改成WH_SYSMSGFILTER,断点就失效了. ?????
 
&gt;&gt;o*o:<br>&nbsp; PMSG(lParam).message=WM_CHAR并不是在输入时发生的<br>&nbsp; 您再看看<br>&nbsp;
 
WH_GETMESSAGE钩子,应该能截获EDIT的WM_CHAR。
 
不能中断可能是处于其他进程中的原因
 
&gt;&gt;Pipi<br>&nbsp; 我仅仅在鼠标钩子dll中,将WH_mouse改成WH_SYSMSGFILTER,就变得不能<br>中断了.<br><br>&gt;&gt;o*o<br>&nbsp;你说的PMSG(lParam).message=WM_CHAR并不能捕捉IE地址输入框中的输入<br>其他类型况下可以的.<br>&nbsp; &nbsp; &nbsp;
 
附加功能 &nbsp; 将问题提前 &nbsp; &nbsp;
 
flyhi:如果还想接着讨论请定期提前自己的帖子,如果不想继续讨论请结束帖子。<br>
 
多人接受答案了。
 
后退
顶部