2009-11-05 40 views
2

我有一些非常簡單的代碼中使用Process對象打開文件:窗口在C#中新啓動的過程中顯示出來的背後我當前打開的窗口

 var proc = new Process(); 
     proc.StartInfo.FileName = attachmentPath; 
     proc.StartInfo.UseShellExecute = true; 
     proc.Start(); 
在一段時間

每一次,窗口從當前打開的所有窗口開始打開。我沒有看到爲什麼發生這種情況的任何模式或一致性。有人知道爲什麼發生這種情況,或者我可以如何解決它?謝謝!

回答

1

Windows阻止了應用程序竊取焦點一段時間;它周圍的規則並沒有真正的記錄,大概是爲了防止應用程序圍繞它們工作。

但是,你可以試試這個:

var proc = new Process(); 
    proc.StartInfo.FileName = attachmentPath; 
    proc.StartInfo.UseShellExecute = true; 
    proc.Start(); 

    //Wait for window to spin up 
    proc.WaitForInputIdle(); 
    BringWindowToTop(proc.MainWindowHandle); 

定義BringWindowToTopp/invoke

+0

可以設置焦點的規則記錄在案。請參閱http://msdn.microsoft.com/en-us/library/ms632668%28VS.85%29.aspx – shf301 2009-11-05 04:32:14

+0

這是爲SetForegroundWindow,而不是一個新的進程的窗口。這就是說,這個鏈接顯示了微軟的目標。 – 2009-11-05 04:51:49

相關問題