none
請問 如何把命令列視窗在執行完成動作後自動關閉! RRS feed

  • 問題

  • 各位先進、前輩,您好:

    今天想請教各位、請救高手協助幫忙的問題是:「如何把命令列視窗在執行完成動作後自動關閉」

    小弟目前的開發環境是 VS2008、使用C# 來開發

    情況描述:
    當我程式執行後,因使用著按下 Button 並開始執行我要執行的程式內容(如下方程式碼),然後會出現圖一,也就是說其命令列視窗我要如何讓它自動關閉呢?
    是還要利用像  http://jjnnykimo.pixnet.net/blog/post/25284553  這樣來處理嗎?
    還是有直接可以關閉的方法呢?
    再請各位高手不吝給予指導,謝謝。



    private void btnCloseUAC_Click(object sender, EventArgs e)
    {
           Process pc1 = new Process();
           pc1.StartInfo.FileName = "cmd.exe";
           pc1.StartInfo.Arguments = @"/k %windir%\System32\reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f";
               
           pc1.Start();
    
    }

    圖一:http://img96.imageshack.us/img96/7386/16371880.jpg



    萬丈高樓平地起,只要有心不艱辛
    2010年3月3日 上午 04:06

解答

  • Hi,

    把/K改為/C

    =================================================
    啟動一個 Windows 命令直譯器的新例項

    CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF]
        [[/S] [/C | /K] string]

    /C      執行字串中所描述的命令然後結束命令視窗
    /K      執行字串中所描述的命令然後保留命令視窗
    /S      修改字串在 /C 或 /K (參看下方)
    /Q      關閉 echo
    /D      從登錄中停用 AutoRun 命令(參看下方)
    /A      將內部命令輸出結果以 ANSI 格式導向 pipe 或檔案
    /U      將內部命令輸出結果以 Unicode 格式導向 pipe 或檔案
    /T:fg   設定幕前/幕後色彩 (參看 COLOR /?)
    /E:ON   啟用命令延伸 (參看下方)
    /E:OFF  停用命令延伸 (參看下方)
    /F:ON   啟用檔案及目錄名稱完整字元(參看下方)
    /F:OFF  停用檔案及目錄名稱完整字元(參看下方)
    /V:ON   啟用延遲環境變數延伸,用 ! 作為分隔字元。例如, /V:ON
            可以讓 !var! 在執行時展開變數 var。文法 var 則會在
            輸入時展開變數,這在 FOR 迴圈之中是完全不同的事。
    /V:OFF  停用延遲環境變數展開


    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    2010年3月3日 上午 04:26

所有回覆

  • hi
    在pc1.Start();後加這行試看看

     pc1.StandardInput.WriteLine("exit");
    http://www.dotblogs.com.tw/ricochen/Default.aspx
    2010年3月3日 上午 04:10
  • Hi,

    把/K改為/C

    =================================================
    啟動一個 Windows 命令直譯器的新例項

    CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF]
        [[/S] [/C | /K] string]

    /C      執行字串中所描述的命令然後結束命令視窗
    /K      執行字串中所描述的命令然後保留命令視窗
    /S      修改字串在 /C 或 /K (參看下方)
    /Q      關閉 echo
    /D      從登錄中停用 AutoRun 命令(參看下方)
    /A      將內部命令輸出結果以 ANSI 格式導向 pipe 或檔案
    /U      將內部命令輸出結果以 Unicode 格式導向 pipe 或檔案
    /T:fg   設定幕前/幕後色彩 (參看 COLOR /?)
    /E:ON   啟用命令延伸 (參看下方)
    /E:OFF  停用命令延伸 (參看下方)
    /F:ON   啟用檔案及目錄名稱完整字元(參看下方)
    /F:OFF  停用檔案及目錄名稱完整字元(參看下方)
    /V:ON   啟用延遲環境變數延伸,用 ! 作為分隔字元。例如, /V:ON
            可以讓 !var! 在執行時展開變數 var。文法 var 則會在
            輸入時展開變數,這在 FOR 迴圈之中是完全不同的事。
    /V:OFF  停用延遲環境變數展開


    謙卑學習,持之以恆,才能不斷的Level Up http://www.dotblogs.com.tw/larrynung/
    2010年3月3日 上午 04:26

  • 謝謝 蹂躪 前輩,
    我剛測試後,那參數改成 /c 就OK了,
    我真是眼殘,對於這種細節都沒有認知注意到,
    真的很不好意思,讓大家還來費心替我解答,謝謝大家。

    至於 ricoisme  前輩
    您提到的方法,我也有另外試了一次,不過會發生

    InvaildOperationException 未處理的錯誤,
    內容為 StandardIn 尚末被重新導向。

    所以這方法似乎不可行,這是我實作的結果,向您回報,
    同時也感謝您的熱心幫忙。


    最後,感謝十方高手、前輩的指導及提點,謝謝各位。


    萬丈高樓平地起,只要有心不艱辛
    2010年3月3日 上午 04:58