0
MainWindowHandleについていくつかのスレッドを読みましたが、私の問題の解決策を見つけることができませんでした。私はGUIアプリケーションを起動していて、MainWindowHandleをプロセスオブジェクトに渡したいのですが、 guiがロードされるまで、thread.sleep()で待つつもりがない場合。私はまた、WaitForInputIdleを使用しようとしているが、それは全く役に立たなかった。私は彼がハンドルを右に取得する通常のThread.sleepでwaitforinputidleを交換していた場合c#MainWindowHandle always zero
process.Start();
process.WaitForInputIdle(1000);
while (process.MainWindowHandle == IntPtr.Zero)
{
Thread.Sleep(100);
}
// do something with the handle
彼は、しばらく時間が残されることはありません。単に言葉でそれを置くため
:私は、私がハンドルを得れば私のコードを継続したい=ゼロが、私はMainWindowHandleに格納された値がキャッシュされている。この
thatsソリューション、ありがとうございます。どのようにwaitforinputidleが果たしている役割は? msdn:http://msdn.microsoft.com/en-us/library/system.diagnostics.process.mainwindowhandle.aspxを読むと、ハンドルが「準備ができていません」というメッセージが表示されます。 – dontcare
@dontcare、それだけではありませんWaitInputIdle()が実際どれくらい効果的かを私に明確にしてください。このメソッドに関するドキュメンテーションが私たちに伝えていることは、子供がアイドル状態になるまでブロックされます。これは、アイドル状態であることは、子供が 'MainWindowHandle'を持っていることを意味すると信じていますが、このメソッドとの最初の出会いからわかるように、これは完全に正確ではありません。 – Tung