我正在尝试在隐藏模式下使用 process.start 打开简单的 .net exe/notepad.exe。并且我稍后需要进程句柄以使 application.exe 在一段时间后使其可见。
只能在 WindowStyle.Minimized、WindowStyle.Maximized、WindowStyle.Normal 中获取句柄。在隐藏式中,它总是给我 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. }