调用dll的一个疑问(急)(50分)

  • 主题发起人 主题发起人 ruder
  • 开始时间 开始时间
R

ruder

Unregistered / Unconfirmed
GUEST, unregistred user!
俺按网上的范例编写了个全局键盘钩子的dll<br>然后这样调用这个dll<br>program Project1;<br><br>uses<br>&nbsp; Windows,<br>&nbsp; Messages,<br>&nbsp; SysUtils,<br>&nbsp; Variants,<br>&nbsp; Classes,<br>&nbsp; Graphics,<br>&nbsp; Controls,<br>&nbsp; Forms,<br>&nbsp; Dialogs;<br>var<br>function EnablekeyboardHook(hh:integer):bool;external 'Project2.dll';<br>function disablehook:bool;external 'Project2.dll';<br><br>procedure doit;<br>var<br>s1,s2:string;<br>hhandle1,hhandle2:Thandle;<br>b1,b2:bool;<br>begin<br>s1:='1.txt - 记事本';<br>s2:='2.txt - 记事本';<br>hhandle1:=findwindow(nil,pchar(s1));<br>hhandle2:=findwindow(nil,pchar(s2));<br>if (hhandle1&gt;0) and (hhandle2&gt;0) then begin<br>&nbsp; showmessage('handle ok');<br>&nbsp; &nbsp;b1:=EnablekeyboardHook(GetWindowThreadProcessId(hhandle1));<br>&nbsp; &nbsp; &nbsp;if b1 then showmessage('1 ok');<br>&nbsp; &nbsp;sleep(4000); &nbsp;<br>&nbsp; &nbsp;b2:=EnablekeyboardHook(GetWindowThreadProcessId(hhandle2));<br>&nbsp; &nbsp;if b2 then showmessage('2 ok');<br>&nbsp;end;<br>end;<br><br>begin<br>doit;<br>end.<br>运行后第一个已经成功挂接,但第二个却没有。<br>不知为何,盼高手解答,分数不多(我没有分了),thanks!
 
一个钩子就够,何必要多个?钩子里面分别处理就是~
 
那我以后要再把hook挂到别的窗体上那不是又要改dll吗<br>难道不改动dll不行吗?
 
晕,你的这个钩子有什么用,你要那么多钩子来钓鱼啊?
 
测试键盘记录的东东<br>俺想知道为什么上面的那种方法没用呢?<br>
 
要看你的DLL源码才知道~
 
dll里面只是实现一个键盘记录的功能<br>(太长不便帖出:p)<br>exports<br>function EnablekeyboardHook(hh:integer):bool; &nbsp;//挂接钩子<br>function disablehook:bool; <br>这两个函数撒<br><br>
 
导致这样基本有可能是DLL部分问题,就是EnablekeyboardHook处理的问题。
 
后退
顶部