if(fdwReason == DLL_PROCESS_ATTACH) 
{
WriteLog("DLL_PROCESS_ATTACH\n");
InitParam();
g_hhook = SetWindowsHookEx(WH_CALLWNDPROC,     GetMsgProc, 
         ModuleFromAddress(GetMsgProc), 0);
if(g_hhook == NULL)
WriteLog("SetWindowsHookEx failed\n");
else
WriteLog("SetWindowsHookEx success\n");
PostMessage(HWND_BROADCAST,WH_GETMESSAGE,NULL,NULL);
PostMessage(HWND_BROADCAST,WH_GETMESSAGE,NULL,NULL);
DWORD tid = GetCurrentThreadId();
PostThreadMessage(tid,WH_GETMESSAGE,NULL,NULL);
Sleep(100);
//MessageBox(0,"begin",0,0);
}

解决方案 »

  1.   

    MessageBox(0,"begin",0,0);如果把这句加上,每次都成功。有人说发送消息,这样发送不可以么。
      

  2.   

    呵呵,这是一个消息循环的问题.win32DLL是没有消息循环的.如果你加上MessageBox,那么弹出来的时候,就把控制权交给系统了,系统就可以处理消息了.解决方法是建MFC DLL工程,而不是win32工程.
      

  3.   

    rabo(不哭死人) 厉害啊。已经搞定了。