Ответ 1
В OnInitialized
методе дескриптор еще не создан. Но вы на правильном пути. Если вы поместите свой вызов в событие Loaded
, будет создан дескриптор, и он должен вернуть правильный дескриптор.
Я объявляю следующий класс:
public partial class MainWindow : Window
И мне нужно получить фактический дескриптор окна, как только окно будет иметь его. Как я могу это сделать и где я должен поместить функцию запроса.
Я пробовал до сих пор:
IntPtr hwnd = new WindowInteropHelper(this).Handle;
Но дескриптор, который я возвращаю, равен 0, что может быть связано с тем, что он был установлен в OnInitialized - возможно, окно еще не готово на этом этапе. И, да, это связано с WPF, спасибо за указание на это!
Спасибо
В OnInitialized
методе дескриптор еще не создан. Но вы на правильном пути. Если вы поместите свой вызов в событие Loaded
, будет создан дескриптор, и он должен вернуть правильный дескриптор.
Самое раннее место, где вы можете получить дескриптор, - OnSourceInitialized
[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");
}