私はATLサポート付きのMFCアプリケーションを持っています。アイデアは誰かがmfcアプリケーションで宣言されたインターフェイスのインスタンスを作成するときです。COM MFCアプリケーションでウィンドウが表示されない
comクライアントがcmd.exeの場合、これはすべて正常に動作します。私はインターフェイスをインスタンス化するクイッククライアントを作成しました。このインスタンスが発生すると、ウィンドウは必要に応じて表示されます。
しかし、このインスタンシエーションが別のcomオブジェクト(たとえば、atlサーバーオブジェクト(サービス))で実行された場合、ウィンドウは表示されません。 mfcプロセスはDcomLaunchプロセスで作成されますが、ウィンドウは表示されません。すべて正常に動作しますが、ウィンドウがデスクトップに表示されません。
つの質問:
1)なぜ私の窓は、このような状況では表示されませんか?
2)コンソールアプリケーションで同じインタフェースを作成すると、mfcアプリケーションの1つのプロセスしか作成されず、コンソールアプリケーションが何回起動するのか、そしてサービスが複数のオブジェクトをインスタンス化しようとすると、 1つのmfcプロセスが作成されます!なぜこれが、どうして私はこれを避けることができますか?どのようにして、最初のmfcプロセスが常にクライアント呼び出しに応答する同じプロセスであることを確認できますか?
(私はこれは、すべてのセキュリティ設定が原因だと思う...しかし、私はすでにいくつかと何を変更しよう...)
おかげ
サービスを作成することはできません一般的にヌーノ
はい、あなたは正しいですが、私がしたことは、あなたがしないことです(サービスがデスクトップとやりとりすることを許可するサービスを持っているということです)。 あなたが提供するベストプラクティスのソリューションは悪くないですが、何か単純なものではあまりにも多くの作業があるので少し迷惑ですが、私はあなたのアドバイスをベストプラクティスで私の頭の中に保存します:) ありがとう – Nuno