关注。
对话框资源是装在在Dll的模块中吗?是不是系统误在其他的dll模块下查找你给的资源而出错呢?(我猜测可能由于是通过修改函数入口指针执行你的函数的,所以系统的机制未启用,误判了函数所在的模块?)
试试用CreateDialogIndirect,直接把资源的指针传过去。
资源指针可以用:
HGLOBAL hRes = LoadResource(hInstanceDll, MAKEINTRESOURCE(IDD_DIALOG)); //注意用包含资源的Dll模块句柄。
LPVOID lpRes = LockResource(hRes); // 就可以用作lpTemplate
取得。
是SDK吧,不然就白说了。

解决方案 »

  1.   

    这一句应该是:
    HGLOBAL hRes = LoadResource(hInstanceDll, MAKEINTRESOURCE(IDD_DIALOG), RT_DIALOG); 
    对不起,写漏了。
      

  2.   

    你那个dlg资源是和用于截获的注入dll一体吗?
      

  3.   

    在你的DLL的CreateFileA有没有用SetResourceHandle()来设置你的资料句柄吗?
      

  4.   

    to In355hz:
    首先谢谢In355hz的关注。我未用过CreateDialogIndirect,我会试一试的。不过在此dll总的其他函数中,我确实能弹出对话框。
      

  5.   

    to kronus:
    自然在一起
      
      

  6.   

    to vcmfc:
    没有用,待我试一试。