まず、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 と通信できるようにする必要があり、メイン アプリケーション (C++ の 50 万行以上) とラッパー プログラム (数百行) を簡単に移植できない可能性があります。