Подтвердить что ты не робот

Получение дескриптора окна в С#

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

public partial class MainWindow : Window

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

Я пробовал до сих пор:

IntPtr hwnd = new WindowInteropHelper(this).Handle;

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

Спасибо

4b9b3361

Ответ 1

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

Ответ 2

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

Ответ 3

 [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");
                }