向目标进程注入dll,并创建显示无模式对话框的有关问题

向目标进程注入dll,并创建显示无模式对话框的问题
有本地进程A,目标进程B,要注入的dll   C.
说明:使用MFC   dll,主要是界面操作方便.包含对话框资源,有创建对话框的导出函数.
目的:
    通过A,将C远程注入到B.同时调用C的导出函数,创建对话框.
方案:
    a.在C中App.Instance()直接调用导出函数.
    b.再创建一个dll   D,并将D也注入到B中,由D来调用C里的导出函数.
    c.在注入C到B后,再向B远程注入执行函数,使B执行C里的导出函数.
    d.改用MFC扩展DLL,在DLLMain里创建一个新的线程.并等待一个事件,事件已通知后调动导出函数,创建对话框.
现象:
    方案a,会报异常.
    下面方案几个执行后,对话框只是闪一下就没有了.而如果注入C到B后,在B里调用C里的导出函数.则对话框正常显示.
问题:
    为什么会出现这些现象?有没有解决方法?




------解决方案--------------------
a.在C中App.Instance()直接调用导出函数.
b.再创建一个dll D,并将D也注入到B中,由D来调用C里的导出函数.
c.在注入C到B后,再向B远程注入执行函数,使B执行C里的导出函数.
d.改用MFC扩展DLL,在DLLMain里创建一个新的线程.并等待一个事件,事件已通知后调动导出函数,创建对话框.
---
a加上AFXXXXX那个宏了吗?
对于其它。。LZ创建的是UI线程吗?这类程序我做过。肯定可以的。。。而且我选择的是宿主是winlogon.exe