2014-10-22 44 views
-2
 System.Diagnostics.ProcessStartInfo procStartInfo = 
       new System.Diagnostics.ProcessStartInfo("C://test.exe", "/c "); 
       procStartInfo.RedirectStandardOutput = true; 
      procStartInfo.UseShellExecute = false; 
      procStartInfo.CreateNoWindow =true;          System.Diagnostics.Process proc = new System.Diagnostics.Process(); 
       proc.StartInfo = procStartInfo; 
       proc.Start();  
       foreach (Process p in Process.GetProcesses()) 
      { 

       if (p.ProcessName == "test.exe") 
       { 
        p.Kill(); 
       } 

這段代碼打開我的exe文件,並在後臺運行。但我沒有得到所需的輸出。而且它也沒有關閉。 (功能上我的EXE應該打開並閱讀兩個文本文件,並在輸出文本文件上生成一些值。)執行與在C#代碼沒有窗戶形成一個獨立的EXE

+0

http://stackoverflow.com/questions/1137781/c-sharp-correct-way-to-load-assembly-find-class-and-call-run-method – 2014-10-22 04:33:35

+0

那裏有小點,試圖隱藏進程。你的用戶可以隨時「訪問」它,它可以在任務管理器中看到,用戶可以在他覺得他的機器上發生了一些奇怪的事情時就可以殺死它。將本地代碼合併到C#項目中的標準方法是創建一個C++/CLI類庫項目。由於解決了令人毛骨悚然的隱藏流程問題,它將使您的程序更加可靠。在另一個過程中檢測和報告不當行爲並不簡單。 – 2014-10-22 06:20:35

回答

0

你試過類似的東西嗎?

ProcessStartInfo ProcessInfo = new ProcessStartInfo(PathToExe, MyArgs); 
ProcessInfo.CreateNoWindow = true; 
ProcessInfo.WindowStyle = ProcessWindowStyle.Hidden; 
Process MyProc = Process.Start(ProcessInfo); 
MyProc.WaitForExit();