首先,我想指出我需要使用 COM/OLE2 API,低级别的东西,可以放在 C Windows 控制台程序中的东西。我无法使用 MFC。我不能使用.NET。
我的问题是:
给定以下代码:
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++)与我的包装程序(几百行)。