これが 2 つのアプリケーションを相互に通信させる正しい方法であると確信していますか?
BApp のソース コードがなく、使用できる API もない場合、対話型ユーザーのふりをすることが BApp と対話する唯一の方法である可能性があります。問題が多いことを認識して、いつ何が起こるかを考えてください。
- BApp はまだ実行されていません
- BApp でモーダル ダイアログが開いている
- BApp が操作中 (またはハング) で、そのメニューが無効になっている
- BApp が新しいバージョンに更新され、その UI が変更されました
- インタラクティブなユーザーが、操作の途中でフォーカスを変更します。
これに代わる方法は、UI を使用してアプリケーションを単体テストする場合と同じことを行うことです。これは、関数を実行する呼び出しを作成してアプリケーションを自動化するという同じことを行っているためです。この場合、結果が期待どおりであることをテストします。これは WPF の投稿であるため、MVVM を使用してアプリケーションを作成していると仮定できます。(UI を変更するときに脆弱性を回避するための) 最善の方法は、UI (ビュー) を無視し、その下にあるレイヤー、つまり VM を呼び出すことです。 (ビューモデル)。
実際、BApp アプリケーション内に自己ホスト WCF 接続を追加して、外部から呼び出すことができるようにするのは非常に簡単です。
this._host = new ServiceHost(service);
this._host.AddServiceEndpoint(typeof(IContract), new NetTcpBinding(), address);
this._host.Open();
これにより、2 人が完全に独立して会話できるようになります。