看大师们的代码为什么有些钩子不用判断iCode参数为HC_ACTION,而用些却要判断这个参数呢?(50分)

  • 主题发起人 主题发起人 ff_ff
  • 开始时间 开始时间
没看懂你在说什么……<br>钩子都是预先定义的,定义方法在SDK里有
 
比方说<br>function HookMouse(iCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall; export;<br>var<br> &nbsp;buffer:array[0..3] of char;<br>begin {鼠标左键按下消息}<br> &nbsp;if wparam=$0201 then &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &nbsp;WM_GETTEXT<br> &nbsp;begin<br> &nbsp; &nbsp;SendMessage(pMOUSEHOOKSTRUCT(lparam)^.hwnd,$000D,3,Integer(@buffer));<br> &nbsp; &nbsp;if buffer='登' then GetPassWord;<br> &nbsp;end;<br> &nbsp;Result := CallNextHookEx(MouseHook, iCode, wParam, lParam);<br>end;<br>怎么没有判断iCode参数是否为HC_ACTION呢<br>function JournalRecordProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;<br>var<br> &nbsp;Kbs: TKeyboardState;<br> &nbsp;HFile: THandle;<br> &nbsp;WChar: array[0..1] of Char;<br> &nbsp;WSize: DWORD;<br>begin<br> // lParam指向消息结构, 并且, 是键盘按下消息<br> &nbsp;if (nCode = HC_ACTION) and (PEventMsg(lParam).message = WM_KEYDOWN) then[red]<br>这里就要判断它[/red]<br> &nbsp;begin<br> &nbsp; // 取键盘状态<br> &nbsp; &nbsp;GetKeyboardState(Kbs);<br>......<br>如果icode!=HC_ACTION就不能取到鼠标结构本中的内容了.为什么有的要判断,有的却没有判断呢
 
走过路过不要错过,谢谢
 
兄弟们不要错过,等着发分呢
 
我也想知道,帮你顶一下。
 
规范的做法是应该判断的,但是没判断,问题也不是很大.. [:)]<br>另外,每种钩子的iCode的含义也不是完全相同,具体的自己看SDK文档..
 
爱冉冉的哥哥,<br>还是不明白,<br>规范的做法是应该判断的,但是没判断,问题也不是很大??
 

Similar threads

回复
0
查看
863
不得闲
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
后退
顶部