webentwicklung-frage-antwort-db.com.de

Finden des Handles für ein WPF-Fenster

Windows Forms hatte eine Eigenschaft win1.Handle, die, wenn ich mich erinnere, das Handle des Hauptfensters zurückgibt?

Gibt es eine äquivalente Möglichkeit, das Handle eines WPF-Fensters zu erhalten?

Ich habe den folgenden Code online gefunden,

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

aber ich glaube nicht, dass mir das hilft, weil meine Anwendung mehrere Fenster hat.

Vielen Dank!!

97
Evan

Nun, anstatt Application.Current.MainWindow Zu übergeben, übergeben Sie einfach einen Verweis auf das gewünschte Fenster: new WindowInteropHelper(this).Handle und so weiter.

128
Gregory Higley

Verwenden Sie einfach Ihr Fenster mit der WindowsInteropHelper-Klasse:

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

Im Moment fragen Sie nach dem Hauptfenster der Anwendung, von dem es immer eines geben wird. Sie können dieselbe Technik jedoch für jedes Fenster anwenden, sofern es sich um eine von System.Windows.Window abgeleitete Window-Klasse handelt.

36
Reed Copsey

sie können verwenden:

Process.GetCurrentProcess().MainWindowHandle
4
Amer Sawan

Wenn Sie aus irgendeinem Grund Fenster-Handles für ALLE Windows Ihrer Anwendung benötigen, können Sie das Application.Windows Eigenschaft, um auf alle Windows zuzugreifen, und verwenden Sie dann WindowInteropHandler, um auf ihre Punkte zuzugreifen, wie Sie bereits gezeigt haben.

3
dustyburwell