EXE 用hook 把DLL 在放到应用程序里,然后DLL 取得数据,数据量可以不小。请问如何实现? 谢谢!

解决方案 »

  1.   

    看来你的DLL应该与你的EXE不在同一进程(否则不需要使用Hook),这样就需要使用进程间通信手段,我比较喜欢用WM_COPYDATA消息、映象文件、管道、进程外COM组件这几种方法。如果你只是要把DLL获取的数据传递给EXE,建议用WM_COPYDATA或单向管道。它们用起来比较简单,不过都要把数据组织成线性(流)方式,然后把整个数据流发送给EXE,EXE中再恢复出来。其中用WM_COPYDATA最容易,但需要EXE中有消息循环。
      

  2.   

    谢谢plainsong我去试一下,晚上给分
      

  3.   

    啊?没看到是hook,那一般的指针不行。需要把数据放在共享段里才能用指针。用映射文件也行。
      

  4.   

    推荐两种方式1、共享数据段
    #pragma data_seg("Shared")
    BYTE buffer[1024];
    #pragma data_seg()
    #pragma comment(linker, "/Section:Shared,rws")2、传递指针,直接读取
    使用ReadProcessMemory、WriteProcessMemory是可以读写其他进程的内存的
    例:WriteProcessMemory(hProcess, buffer, (LPVOID)(LPCTSTR)m_strName, 256, NULL);这两种方式比较简单,直接读写内存