Получение дескриптора окна в C # - PullRequest
24 голосов
/ 18 февраля 2009

У меня объявлен следующий класс:

public partial class MainWindow : Window

И мне нужно получить фактический дескриптор окна, как только у окна будет такой. Как я могу это сделать и где я должен поставить функцию запроса.

То, что я до сих пор пробовал, было:

IntPtr hwnd = new WindowInteropHelper(this).Handle;

Но дескриптор, который я возвращаю, равен 0, что может быть связано с тем, что он был установлен в OnInitialized - возможно, окно еще не готово на этом этапе. И да - он подключен через WPF, спасибо, что указали на это!

Спасибо

Ответы [ 3 ]

26 голосов
/ 18 февраля 2009

В методе OnInitialized дескриптор еще не создан. Но вы на правильном пути. Если вы поместите свой вызов в событие Loaded, будет создан дескриптор , который должен вернуть правильный дескриптор .

6 голосов
/ 19 февраля 2009

Самое раннее место, где вы можете получить дескриптор, - OnSourceInitialized

0 голосов
/ 18 февраля 2009
 [DllImport("user32.dll", EntryPoint = "FindWindowEx")]
        public static extern int FindWindowEx(int hwndParent, int hwndEnfant, int lpClasse, string lpTitre);


int hwnd = FindWindowEx(0, 0, 0, title);//where title is the windowtitle

                //verification of the window
                if (hwnd == 0)
                {
                    throw new Exception("Window not found");
                }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...