首先,我想说明的是,我需要使用COM/OLE2 API,低级别的东西,可以放在C Windows控制台程序中的东西。我无法使用MFC。我无法使用.NET。重新连接到流程开始通过COM
我的问题是:
考虑下面的代码:
CLSID clsid;
HRESULT hr;
hr = CLSIDFromProgID(L"InternetExplorer.Application", &clsid);
assert(SUCCEEDED(hr));
hr = CoCreateInstance(clsid,
NULL,
CLSCTX_LOCAL_SERVER,
IID_IDispatch,
(void **)&(iePtr_));
assert(SUCCEEDED(hr));
是否有写一些信息到磁盘,以便我可以重新连接到IE浏览器的同一个实例以后一种方式?基本上可以将“iePtr_”串联起来以便稍后通过其他一些流程进行重构?
谢谢。
----后来补充------
我试图解决更广泛的问题是,我要开始一个AutoCAD应用,一些数据加载到它,然后让它运行我的客户与之交互。之后他会回到我的应用程序,我想重新连接到相同的AutoCAD会话并为其提供更多数据。
现在,我完全清楚地意识到,我可以将IDispatch指针保留在我的应用程序的内存中,并且可以继续与同一个AutoCAD进程交互。这是我的后备职位。
但是,我使用“包装”程序来做我的COM的东西。所以包装是暂时的。我的主应用程序启动包装,然后包装通信,然后退出。我只想让后续的包装进程能够重新连接到相同的AutoCAD进程。
为什么要使用包装?这是工作原因:我的主应用程序是32位应用程序,但我可以使用64位包装器并与64位AutoCAD通信。我需要能够与64位AutoCAD进行通信,并且可能无法轻松移植我的主应用程序(500K + C++行)与我的包装程序(几百行)。
你试图解决什么更广泛的问题? – reuben 2009-09-03 06:41:46
您应该使用SUCCEEDED()而不是!FAILED() - 这就是它的目的。我将编辑代码。 – sharptooth 2009-09-03 14:02:32
在主帖中添加了“更广泛”的图片。 – 2009-09-03 17:58:19