首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

ShellExecute 執行控制台程式避免視窗閃退

     編輯:程式設計綜合問答

使用 ShellExecute 啟動控制台應用程式(如 br.exe)時,視窗執行完畢立即關閉,導致無法查看輸出。主要原因在於參數傳遞方式導致程式異常退出,或程式本身執行完畢即退出無暫停機制。

解決方案:將參數併入完整命令列字串

將執行檔路徑與所有參數合併為單一字串傳給 lpFile 參數,lpParameters 設為 NULL 或空字串。範例:

CString cmd = _T("E:\\IDIdentify\\openbr-new\\build-msvc2013-x86\\install\\bin\\br.exe ")
    _T("\"-algorithm FaceRecognition -compare ")
    _T("E:\\IDIdentify\\openbr-new\\build-msvc2013-x86\\install\\bin\\3.jpg ")
    _T("E:\\IDIdentify\\openbr-new\\build-msvc2013-x86\\install\\bin\\4.jpg\"");

ShellExecute(0, _T("open"), cmd, _T(""), _T(""), SW_SHOWNORMAL);

補充:保持視窗開啟的常用技巧

  • 在批次檔或捷徑中加入 cmd /k 前綴,執行完保留視窗:
    cmd /k br.exe -algorithm ...
  • 若可修改 br.exe 原始碼,在 main 結束前加 system("pause") 或 getchar()。
  • 改用 CreateProcess 配合 CREATE_NEW_CONSOLE 旗標,並等待進程結束。

常見坑點

  1. 路徑含空格時,需用雙引號包裹整個執行檔路徑,參數內再用巢狀引號(轉義)。
  2. ShellExecute 的 lpParameters 參數對複雜引號處理支援有限,合併為單一命令列最穩健。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved