Windows 7 では、"MyComServer.exe" などのアウト プロセス COM サーバーがあります。と として登録しCLSCTX_LOCAL_SERVER
ますREGCLS_MULTIPLEUSE | REGCLS_SUSPENDED
。
インタラクティブ セッション (セッション番号 > 0) では、実行しているクライアントの数に関係なく、MyComServer.exe のインスタンスが 1 つしか実行されません。COM サーバーを使用して 5 つの Excel、3 つの Matlab、その他 7 つを実行しているとします。実行中の MyComServer.exe は 1 つだけです。これはいいです、これは私が意図したものです。
セッション 1、2、3 など、複数のセッションがアクティブな場合、MyComServer.exe の 3 つのインスタンスが表示されます。tasklist を使用すると、各インスタンスが異なるセッションで実行されていることがわかります。これも意図したとおりでいいです。
ただし、セッション 0 から使用すると、クライアントごとにインスタンスが表示されます。3 つの Windows サービスがすべてそれを使用しているとします。MyComServer.exe の 3 つのインスタンスが表示されます。tasklist を使用すると、3 つすべてがセッション 0 で実行されていることがわかります。セッション 0 のプロセスは、プロセス外の COM サーバーを共有できますか?
この問題を調査PostMessage
すると、セッション 0 のプロセス間で機能しないことがわかりました。私が理解しているドキュメントを読むと、PostMessage
セッションをまたぐことは想定されていません。つまり、セッション 0 のプロセスは、セッション 1 のプロセスにメッセージを投稿できません。 、セッション1のプロセスは同じセッションの別のプロセスにメッセージを投稿できますが、セッション0のプロセスは、ターゲットがセッション0でも実行されている場合でも、他のプロセスにメッセージを投稿できません.誰かがこれを確認できますか? Microsoft のドキュメントと矛盾しているようです。
ありがとう。