Нахождение дескриптора окна WPF - PullRequest
96 голосов
/ 12 октября 2009

У форм Windows есть свойство win1.Handle, которое, если я помню, возвращает дескриптор дескриптора главного окна?

Есть ли эквивалентный способ получить дескриптор окна WPF?

Я нашел следующий код в сети,

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

но я не думаю, что это поможет мне, потому что в моем приложении несколько окон.

Спасибо !!

Ответы [ 4 ]

126 голосов
/ 12 октября 2009

Ну, вместо того, чтобы передавать Application.Current.MainWindow, просто передайте ссылку на то окно, которое вам нужно: new WindowInteropHelper(this).Handle и т. Д.

36 голосов
/ 12 октября 2009

Просто используйте ваше окно с классом WindowsInteropHelper:

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

Прямо сейчас вы запрашиваете главное окно приложения, из которого всегда будет одно. Вы можете использовать эту же технику в любом Window, однако, при условии, что это класс Window, производный от System.Windows.Window.

4 голосов
/ 30 мая 2012

вы можете использовать:

Process.GetCurrentProcess().MainWindowHandle
3 голосов
/ 12 октября 2009

Если по какой-то причине вам нужны дескрипторы окон для ВСЕХ Window вашего приложения, вы можете использовать свойство Application.Windows, чтобы получить доступ ко всем окнам, а затем использовать WindowInteropHandler, чтобы получить их дескрипторы, как вы уже сделали. продемонстрировал.

...