2016-10-14 7 views
0

私のWPFアプリケーションは、Cプログラム(アンマネージド)によって呼び出されます。 WPFアプリケーションを、呼び出し元のアプリケーションが存在する画面に残したいと思っています。私はデュアルモニターを持っています。WPF:フォームの所有者を呼び出し元のアプリケーションにする方法

私は自分のWPFフォームWindowStartupLocation = "CenterOwner"を作成し、呼び出し元のアプリケーションに所有者を設定します。

私は、呼び出し元のアプリにWPFウィンドウの所有者を設定するための次のステップは何ですか?

Process.GetProcessById(CallingProcessID) 

を経由して、呼び出し元のアプリを取得することができますか

更新: 質問の目的は、呼び出し元のプログラムが常駐する画面上にすべてのWPFウィンドウを置くことです。

+0

アンマネージドアプリケーションでウィンドウが表示されますか?次に、WPFウィンドウの 'Onwer'プロパティをアンマネージウィンドウのウィンドウハンドルに設定することができます。 – dymanoid

+0

はい、あります。 OwnerはWindow型で、UnmanagedウィンドウハンドルはIntPtr型です。ハンドルをWindow型に変換する方法はありますか? – Shawn

答えて

1

アンマネージドアプリケーション(HWND)のウィンドウハンドルがあると仮定すると、WindowInteropHelperを使用して、このHWNDをWPFウィンドウの親として設定できます。

WindowInteropHelper wih = new WindowInteropHelper(myWpfWindow); 
wih.Owner = unmanagedOwnerHwnd; 

OwnerプロパティはIntPtr型であるので、これはあなたの問題を解決する必要があります。

+0

ありがとう、ジーマノイド、それは働いた。 – Shawn

関連する問題