COM DLL和ActiveX的问题

时间:2012-04-26 13:37:42

标签: dll com mfc activex

我遇到了一个我似乎无法找到解决方案的问题,因为我不是一个COM专家(在过去一个月左右我自己学习了基础知识),我想我请四处询问是否有解决方案。我正在使用visual studio 2003(VC ++),现在我有一个主程序(基于MFC对话框的exe),当打开某个对话框时,它想要访问一些管理员级别的权限。我读了一下这个,发现不可能为已经运行的进程提供管理权限,并且我需要使用COM提升名字对象来创建具有管理权限的新进程。 (http://msdn.microsoft.com/en-us/library/windows/desktop/ms679687%28v=vs.85%29.aspx)这就是问题出现的地方。

现在,我有一个COM atl dll(支持MFC,合并代理/存根代码和支持COM +),我需要在一个包含的对话框中托管一个ActiveX控件(基于IWebBrowser2)(MFC)对话框)在这个DLL中。但是,在完成提升过程并调用公开方法以显示对话框后,它始终无法启动/显示。我一直在寻找解决方案,偶然发现了一些事情,但似乎无法解决问题。以下是我所做的一些事情:

- 在调用dll的线程中的dll的InitInstance + CoInitializeEx(NULL,COINIT_MULTITHREAD)中添加了AfxEnableControlContainer()。这实际上导致程序在尝试调用对话框的DoModal()时失败(wincore.cpp,第884行,afxmaphwnd == NULL)。

- 我试图在对话框中删除纯粹的ActiveX控件,如果我这样做,它似乎工作正常,所以问题看起来好像是与ActiveX控件链接。

- 我尝试创建一个非模态对话框(从来不知道我猜)但出现同样的问题

我观察到在输出中我在创建对话框时出现以下错误(不知道是否是我问题的原因或结果) ......的第一次机会异常:0x800706BE:远程过程调用失败。 ......的第一次机会异常:0x800706BA:RPC服务器不可用。

我可能会遗漏一些非常基本的东西(现在大学的学生,所以我可能不知道一些对某些人来说可能显而易见的东西),所以如果有人知道可能出错的地方,请告诉我。

0 个答案:

没有答案