EXE 加载DLL 时候 创建事件
g_hEvt = ::CreateEvent(NULL, FALSE, FALSE, GLOBAL_EVENT)然后再把DLL hook进另一个exe中, 创建的g_hEvt 不相同。查了资料说,这两个值都是对同一事件内核的引用,可以不一样。。但是问题来的了, 在hook进的exe中, 我用SetEvent(g_hEvt)来发送信号, 可是在自己的ExE中 WaitForSingleObject 等待信号,确没有办法得到,有谁知道问题出在哪么。。谢谢!

解决方案 »

  1.   

    在dll中 要把共享的东西设置成 共享段吧.你查查这方面的资料,我记不清了.恩,应该是这个问题
      

  2.   

    跨进程用GLOBAL_EVENT 用全局Event \\Global
    SetEvent前,先用OpenEvent等打开查询这个全局event
      

  3.   

    #pragma data_seg("MySec")新建了一个节,用于将下 面的这个变量设为全局共享。
    HWND g_hWnd=NULL;这个变量是全局共享的。
    #pragma data_seg()
     
    //#pragma comment(linker,"/section:MySec,RWS")
    你参考一下
      

  4.   

    g_hEvt = ::CreateEvent(NULL, FALSE, FALSE, GLOBAL_EVENT)
    要改成
    g_hEvt = ::CreateEvent(NULL, FALSE, FALSE, "GLOBAL\\EVENT_Name")
    打开时使用相同名字
      

  5.   

    GLOBAL_EVENT 是我定义的宏~~ #define GLOBAL_EVENT "Event_Out"使用共享段 值可以确定一样,但是发送信号 还是接受不到的
      

  6.   


    SetEvent(g_hEvt)返回错误, 句柄无效,我昏倒~~~ 这是哪里出错了呀~~
      

  7.   

    前面不是提到了用全局的
    #define GLOBAL_EVENT "GLOBAL\\Event_Out"