Я пытался понять Process.MainWindowHandle .
По данным MSDN; «Главное окно - это окно, которое создается при запуске процесса. После инициализации могут открываться другие окна, в том числе окна Modal и TopLevel, но первое окно, связанное с процессом, остается главным окном «. (Акцент добавлен)
Но во время отладки я заметил, что MainWindowHandle, похоже, изменил значение ... чего я не ожидал, особенно после ознакомления с документацией выше.
Для подтверждения поведения я создал отдельное приложение WinForms с таймером, чтобы проверять MainWindowHandle процесса "DEVENV" (Visual Studio) каждые 100 мс.
Вот интересная часть этого тестового приложения ...
IntPtr oldHWnd = IntPtr.Zero;
void GetMainwindowHandle()
{
Process[] processes = Process.GetProcessesByName("DEVENV");
if (processes.Length!=1)
return;
IntPtr newHWnd = processes[0].MainWindowHandle;
if (newHWnd != oldHWnd)
{
oldHWnd = newHWnd;
textBox1.AppendText(processes[0].MainWindowHandle.ToString("X")+"\r\n");
}
}
private void timer1Tick(object sender, EventArgs e)
{
GetMainwindowHandle();
}
Вы можете видеть, как значение MainWindowHandle меняется, когда вы (например) щелкаете раскрывающееся меню внутри VS.
Возможно, я неправильно понял документацию.
Может ли кто-нибудь пролить свет?