8

COM ライブラリを使用するアプリケーションを入手しましたが、そのアプリケーションがその COM ライブラリを LocalServer または In-Proc として使用しているかどうかを知るにはどうすればよいでしょうか?

私はこのように構築されているコードを見ました:

DATCOMLib::ITEmulationPtr pTE(__uuidof(DATCOMLib::TEmulation));
4

3 に答える 3

1

複数の方法を使用して見つけることができます

  1. コードを見て - 「 CreateInstance」または「CoCreateInstance 」を呼び出すときに渡されるクラス コンテキストを確認します- (CLSCTX_INPROC_XXXX の場合、インプロセス サーバーは、呼び出し元のアプリケーション プロセスのアドレス空間にロードされる DLL であることを意味します。CLSCTX_LOCAL_SERVER、CLSCTX_REMOTE_SERVER - 次に、別のプロセスとして実行されている COM サーバーです。1 つまたは複数のフラグを組み合わせた #defines がいくつかあります。ググってみてください)。

    ITEmulationPtr.CreateInstance(uuid(TEmulation), 0, CLSCTX_XXX)

  2. COMコンポーネントがインストールされているマシンにアクセスできる場合は、上記の回答でPeterが示した手順に従うことができます

于 2013-07-05T06:47:17.377 に答える
0
  1. アプリを実行し、COM オブジェクトが読み込まれていることを確認します (コードは質問に示されている部分に到達しました)。
  2. プロセス エクスプローラーを開きます (まだ持っていない場合は Microsoft から入手してください)。
  3. exe 内にある場合はプロセス エクスプローラーを使用して dll 名を検索し、それ以外の場合はインプロセスです。
于 2013-03-26T02:58:44.757 に答える