mydll.dll中有一个对话框类CShowDlg,我在DllMain中,写了AFX_MANAGE_STATE(AfxGetStatic ModuleState());
CShowDlg dlg;
dlg.DoModal();
然后将mydll.dll注入到 Explorer.exe,我的意思是dll注入后,开启对话框.
可是现在注入之后,就蹦出assert对话框,说C:\Windows\Explorer.exe出现  Afxwin1.inl错误,错误行是22 .
这个该怎么改才能实现我的目标?
求教各位大虾了.

解决方案 »

  1.   

    你先确定一下是注入的操作有问题还是你写的DLL有问题
      

  2.   

    回 zzz822163 :我试过了,对话框是在这个dll里的,如果在dll里调用dlg,则会出现错误,即
    if (dwReason == DLL_PROCESS_ATTACH)
    {
      AFX_MANAGE_STATE(AfxGetAppModuleState());
      CDlg dlg;
      dlg.DoModal();
    }
    出错了。但是如果 别的应用程序exe里来调用这两行代码
    {
      CDlg dlg;
      dlg.DoModal();
    }
    不会报错。(CDlg是导出类)我现在是想让dll注入到进程后,自己调用显示对话框,所以只有在if (dwReason == DLL_PROCESS_ATTACH)实现,可是这样就出错。。、、不知道我描述清没
      

  3.   

    windows核心编程上面说过,最好不要在 DLL_PROCESS_ATTACH里面进行太复杂的操作,只做一些初始化操作,
    对于注入的DLL,要显示对话框,可以在DLL里加个键盘钩子,用快捷键来显示对话框
      

  4.   

    可是这是 想在 一注入就将对话框显示出来呀,不在 PROCESS_ATTACH里写代码,那该怎么办呀??