Process.MainWindowHandleを理解しようとしています。
MSDNによると; 「メイン ウィンドウは、プロセスの開始時に作成されるウィンドウです。初期化後、モーダル ウィンドウやトップレベル ウィンドウを含む他のウィンドウを開くことができますが、プロセスに関連付けられた最初のウィンドウはメイン ウィンドウのままです。」(強調を追加)
しかし、デバッグ中に MainWindowHandle が値を変更しているように見えることに気付きました...特に上記のドキュメントを参照した後、これは予期していませんでした。
動作を確認するために、100ms ごとに "DEVENV" (Visual Studio) プロセスの MainWindowHandle をチェックするタイマーを備えたスタンドアロンの WinForms アプリを作成しました。
このテストアプリの興味深い部分は次のとおりです...
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();
}
(たとえば) VS 内のドロップダウン メニューをクリックすると、MainWindowHandle の値が変化することがわかります。
おそらく私はドキュメントを誤解しました。
誰でも光を当てることができますか?