写了一个exe,和dll,dll包含一个窗体exe通过starthook传递路径给dll
在dll的starthook里可以获取到路径
到dll窗体里就得不到了.用了CreateFileMapping,结果发现不能多开了.
如果开多个,只有其中一个hook有反应

解决方案 »

  1.   

    顶一下procedure StartHook(PID :DWORD);stdcall;export;
    begin
      if KeyHook = 0 then
         KeyHook := SetWindowsHookEx(WH_KEYBOARD, @KeyProc, HInstance, PID);
    end;procedure StopHook;stdcall;export;
    begin
     if KeyHook <>0 then
        UnhookwindowsHookEx(KeyHook);
     KeyHook:=0;
    end;KeyHook 到 StopHook里就边空值了
      

  2.   

    都写到dll里吧,你给键盘下钩子还开多个干什么用的?
      

  3.   

    你是否在 KeyProc中调用了 StopHook ?DLL挂到了若干进程中,不同的进程中的KeyHook是相互独立的。
    一个进程中对KeyHook赋值,并不影响另一个进程中的KeyHook的值。所以,调用 StartHook的进程,才能调用 StopHook.