2011-07-27 41 views
3

如何在此代碼中隱藏控制檯?目前每次運行此代碼時都會顯示cmd控制檯。如何從此代碼隱藏CMD控制檯?

protected override void OnStart(string[] args) 
{    
    String applicationName = "cmd.exe"; 
    // launch the application 
    ApplicationLoader.PROCESS_INFORMATION procInfo; 
    ApplicationLoader.StartProcessAndBypassUAC(applicationName, out procInfo); 

} 

如何從這裏執行* .bat文件?我可以簡單地將「cmd.exe」替換爲「xxx.bat」嗎?

+0

不代碼只能打開一個cmd? – Enki

+1

那麼在這裏問這裏比試試更容易? –

+1

是的。但我會將'cmd.exe'更改爲我自己的'app.exe'。 – karikari

回答

4

將系統引用添加到代碼;

using System Diagnostics; 

然後使用此代碼隱藏CMD窗口並運行。

Process cmd = new Process(); 
cmd.StartInfo.FileName = "cmd.exe"; 
cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
cmd.StartInfo.Arguments = "Your arguments"; 
cmd.Start(); 
+0

哪個變量是cmd?我嘗試過但不能編譯:( – karikari

+1

變量'cmd'是我們創建的一個進程變量'Process cmd = new Process'。嘗試在你的解決方案中添加'使用System.Diagnostics',注意你必須改變''你的論點「'你想傳遞給那個過程的參數 –

+0

但我需要使用StartProcessAndBypassUAC函數。怎麼樣? – karikari

0

與Process類代替ApplicationLoader嘗試(我從來沒有聽說類的,它是一個自定義類?)

代碼示例:

using System.Diagnostics; 

Process pr = new Process(); 
pr.StartInfo.FileName = "cmd.exe"; 
pr.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
pr.Arguments = "xxx.bat"; 
pr.Start();