2009-07-24 42 views
2

我在WindowsForm(c#.net 3.5)中,點擊一個按鈕,使用Process.Start()啓動另一個外部應用程序(也是.net 3.5),並瞭解它在我啓動後何時可用。如何知道何時由Process.Start加載winform?

ProcessStartInfo psInfo = new ProcessStartInfo(@"MyApplication.exe"); 
psInfo.RedirectStandardOutput = true; 
psInfo.RedirectStandardError = true; 
psInfo.UseShellExecute = false; 
psInfo.CreateNoWindow = true; 
Process proc = Process.Start(psInfo); 

proc... IsFullyLoaded()? 

我該怎麼做?

回答

3

要等待過程創建其表單,請調用WaitForInputIdle方法。

要找出是否準備好了,試試這個:

bool isReady = proc.WaitForInputIdle(0); 

,或者,

bool isReady = (proc.MainWindowHandle != IntPtr.Zero); 

您還可以使用MainWindowHandle財產使用SendMessage API函數來發送消息到窗體

0

您可以將一個參數傳遞給進程,讓它知道它是如何啓動的。

psInfo.Arguments = "-startedByProcess"; 

然後讓子進程回調到所有者進程,讓它知道它已經開始,通過遠程處理或類似的東西。

相關問題