web-dev-qa-db-ja.com

WPFウィンドウへのハンドルを見つける

Windowsフォームにはプロパティwin1.Handleがあり、思い出すとメインウィンドウハンドルのハンドルを返しますか?

WPFウィンドウのハンドルを取得する同等の方法はありますか?

私は次のコードをオンラインで見つけました、

IntPtr windowHandle = new WindowInteropHelper(Application.Current.MainWindow).Handle;

しかし、私のアプリケーションには複数のウィンドウがあるので、それが助けになるとは思いません。

ありがとう!!

97
Evan

まあ、_Application.Current.MainWindow_を渡す代わりに、必要なウィンドウへの参照を渡すだけです:new WindowInteropHelper(this).Handleなど。

128
Gregory Higley

WindowsInteropHelperクラスでウィンドウを使用するだけです。

// ... Window myWindow = get your Window instance...
IntPtr windowHandle = new WindowInteropHelper(myWindow).Handle;

今、あなたはアプリケーションのメインウィンドウを求めています。そのメインウィンドウには常に一つがあります。ただし、System.Windows.Windowから派生したWindowクラスであれば、この同じ手法を任意のWindowで使用できます。

36
Reed Copsey

あなたが使用することができます:

Process.GetCurrentProcess().MainWindowHandle
4
Amer Sawan

何らかの理由でアプリケーションのすべてのWindowsのウィンドウハンドルが必要な場合は、Application.Windowsプロパティを使用してすべてのウィンドウを取得し、WindowInteropHandlerを使用して既に説明したようにハンドルを取得します。

3
dustyburwell