2011-07-04 225 views
0

我想運行通過在C#服務應用程序的GUI應用程序,所以我有System.Diagnostics.Process.Start()方法,如下嘗試:如何運行通過在C#服務應用程序的GUI應用程序

 if (KillTask("notepad") == false) 
     { 
      //ProcessStartInfo _ProcessStartInfo = new ProcessStartInfo(@"C:\WINDOWS\system32\notepad.exe"); 
      //_ProcessStartInfo.UseShellExecute = false; 
      //_ProcessStartInfo.RedirectStandardError = true; 
      //_ProcessStartInfo.RedirectStandardInput = true; 
      //_ProcessStartInfo.RedirectStandardOutput = true; 
      //_ProcessStartInfo.CreateNoWindow = true; 

      //_ProcessStartInfo.ErrorDialog = false; 
      //_ProcessStartInfo.WindowStyle = ProcessWindowStyle.Maximized; 
      //System.Diagnostics.Process.Start(_ProcessStartInfo); 


      System.Diagnostics.Process.Start("notepad.exe"); 



     } 

問題是記事本運行但沒有UI,你可以在任務管理器中看到它,但沒有顯示記事本的GUI實例。

我也嘗試使用ProcessStartInfo()類,因爲您可以看到標記爲代碼,但問題仍然存在。

+1

問題的根源在於服務不會在具有GUI /桌面的上下文中運行。 –

+0

相關; http://stackoverflow.com/questions/267838/how-can-a-windows-service-execute-a-gui-application –

+1

這是一個艱難的堅果要破解。您需要在當前交互式用戶的桌面上啓動該進程。遠非平凡。並且可能沒有交互式登錄用戶。我認爲你應該重新考慮從服務開始一個互動過程。 –

回答

0

您是否嘗試過將ProcessStartInfo的用戶名和密碼屬性設置爲當前登錄的用戶?問題是系統用戶沒有可用的gui。

+1

這還不夠。您需要在特定的桌面上啓動該過程。 –