你访问的是其它进程,hModule也是其它进程中的地址,进程之间是不能直接使用指针来访问的,要用ReadProcessMemory才行。至于你访问成功的时候,是因为恰好你的进程也Load了对应的模块并且模块地址相同,例如kernel32.dll。

解决方案 »

  1.   

    所有句柄只能当成一个整数值来使用,不能当成一个结构来使用,unused是一个无意义的成员(只有结构长度才有意义),把句柄定义为结构只是为了在C语言中对句柄类型的一种替代表达方式。
    仔细看看HANDLE的定义,可能有多种定义,比如typedef LPVOID HANDLE或者typedef struct{...} HANDLE
      

  2.   

    但是我的这段代码是放在一个全局钩子DLL里面的,挂钩的WH_GETMESSAGE消息,这算不算注入了其他进程?
      

  3.   

    从问题描述来看,是没有在同一进程内。
    你要在收到消息时,判断出是在目标进程中,然后再执行。不能是在其它进程中调用DLL的导出函数。