奇怪啊,为什么没人回答呢? (50分)

  • 主题发起人 主题发起人 gongxingg
  • 开始时间 开始时间
G

gongxingg

Unregistered / Unconfirmed
GUEST, unregistred user!
大虾们看一下啊,为什么下面的代码无法钩住全局的消息,只能钩住本窗体的消息?<br>看来对WINDOWS里的程序抛媚眼还真困难啊。<br>如果把它放到DLL里去,干脆连调用程序的窗体就没有任何反应了.并且这样一来设置连点击窗口最大化的按钮等消息也截取不了,但我记得截取那个的消息的确是WM_SYSCOMMAND啊.<br>555~救.......命........啊...........![:D]<br>怎么才能做成全局的钩子啊?<br>var MyHook:Hhook;<br>function ggg(iCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;<br>begin<br>&nbsp; Result := 0;<br>&nbsp; If iCode &lt; 0 Then Result := CallNextHookEx(myhook, iCode, wParam, lParam);<br>&nbsp;case PMsg(lParam)^.message of<br>&nbsp; WM_SYSCOMMAND:<br>&nbsp; BEGIN<br>&nbsp; case PMsg(lParam)^.wParam of<br>&nbsp; SC_MAXIMIZE:showmessage('1');<br>&nbsp; &nbsp;SC_MINIMIZE :showmessage('2');<br>&nbsp; &nbsp;SC_CLOSE &nbsp; &nbsp;:showmessage('3');<br>&nbsp; &nbsp;SC_SIZE &nbsp; &nbsp; :showmessage('4');<br>&nbsp; &nbsp;SC_MOVE &nbsp; &nbsp; :showmessage('5');<br>&nbsp; &nbsp;SC_RESTORE &nbsp;: showmessage('6');<br>&nbsp; &nbsp;end;<br>&nbsp; END;<br>&nbsp; end;<br>end;<br>procedure TForm1.Button1Click(Sender: TObject);<br>begin<br>&nbsp; end;<br>&nbsp; myhook:=Setwindowshookex(wh_GETMESSAGE,ggg,hinstance,0);<br>end;
 
全局钩子做成dll,回调函数放在应用程序里。
 
能发个例子吗?<br>谢了,我自己写的不知道改了多少回了,DLL文件里也放了,就是没用!<br>[:(]<br>发给我啦,nuogya@sohu.com
 
钩子分为应用程序级和系统级,钩系统就得放到 DLL 中。咦,例子不是在这里有 800 多个吗?
 
哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里哪里<br>
 
Setwindowshookex有个参数需要函数的DLL句柄,你不能这样直接用,用loadlibary,好像返回值就是那个句柄了。
 
全文检索一下吧。
 
你发信到我信箱,我发送例子给你………<br>“后台键盘击键偷取”……(不可将程序用于非法)<br><br>我的信箱:yanchunyi@163.com
 
春意兄,可否给份研究?dgates@163.com
 
是系统钩子吗?<br>如果是的话必须放在DLL里面。<br>有兴趣的话可以交流一下~~~~~!!!<br>我的油箱:fisheryj@yahoo.com.cn[:D]
 
系统钩子一般都要放在DLL里,不过键盘钩子虽然属于系统钩子,<br>但可以不用DLL实现,也就是说可以直接在EXE文件里完成。<br>我正好有个例子。要的留下地址。
 
zhendecat@163.net<br>我要
 
多人接受答案了。
 

Similar threads

后退
顶部