非表示モードで process.start を使用して、単純な .net exe/notepad.exe を開こうとしています。そして、しばらくしてから application.exe を表示できるようにするために、後でプロセスハンドルが必要です。
WindowStyle.Minimized、WindowStyle.Maximized、WindowStyle.Normal でのみハンドルを取得できます。Hidden スタイルでは、常に 0 になります。
Thread.Sleep を使用せずにハンドルを取得する方法。ハンドルを取得するには、数秒待つ必要があります。一部の exe は、そのパフォーマンス (大量のデータ) に基づいて、より多くの待機時間を必要とします。
public static void LaunchExe() { var proc = new Process { StartInfo = { FileName = "Notepad.exe", //or any simple .net exe WindowStyle = ProcessWindowStyle.Hidden } }; proc.Start(); proc.WaitForInputIdle(800); //is it possible to avoid this. Thread.Sleep(3000); //is it possible to avoid this. Console.WriteLine("handle {0}", proc.MainWindowHandle); //ShowWindowAsync(proc.MainWindowHandle, 1); //planned to use, to make it visible. }