DLL 文件
library hook32;
uses
  SysUtils,
  Forms,
  Classes,
  myDLl in 'myDLl.pas' {Form1};{$R *.res}exports
HookOn,HookOff;
begin
end.
myDLl.pasfunction HookOn(lpHwnd:HWND;lpType:Longint): Longint;stdcall; export; 
begin
mhwnd:=lpHwnd;
if hHk<>0 then UnHookWindowsHookEx(hHk);
hThread :=GetWindowThreadProcessId(mhwnd,hmod); 
hHk :=SetWindowsHookEx(lpType,@HookProc,hInstance,hThread); // WH_KEYBOARD
Result :=hHk 
end; exe 文件
function HookOn(lpHwnd:HWND;lpType:Longint):Longint;stdcall;external 'Hook32.dll' name 'HookOn';  申明procedure TForm1.Button1Click(Sender: TObject);
begin
HookOn(要注入的hwnd,WH_KEYBOARD);
end;
DLL是个钩子,想用一个exe把DLL注入到注定进程并记录鼠标或者键盘动作,注入成功后必须可以把exe关闭不影响指定窗口的记录,呵呵,不知道那位大哥能帮我改下。

解决方案 »

  1.   

    你的exe关闭了你的hook就无效了。。
      

  2.   

    目标EXE关了的话,DLL注入也就自动解除了
      

  3.   

    恩,现在的问题就是这个,我看别人的DLL注入到指定进程里面以后exe就可以关闭,和exe已经脱离关系了。不知道是怎么实现的。
      

  4.   

    用全局钩子,用EXPLORER挂起。
      

  5.   

    要用到两个Dll,用自己的程序把第一个dll注入到explorer中,再通过这个Dll去加载另一个带有钩子的dll,当程序关闭时释放的只是第一个Dll