UINT WinExec(LPCSTR lpCmdLine, UINT uCmdShow);
SW_SHOWNORMAL、SW_HIDE、SW_MAXIMIZE、SW_MINIMIZE 等)。範例: WinExec("notepad c:\\hdc.txt", SW_SHOWNORMAL);
返回值: 成功返回 ≥31;失敗返回錯誤碼(0=記憶體不足、ERROR_BAD_FORMAT、ERROR_FILE_NOT_FOUND、ERROR_PATH_NOT_FOUND)。
缺點: 僅能執行 .exe,無法透過檔案關聯開啟文件(如 WinExec("1.html", ...) 無效)。為相容 16 位 Windows 保留,新開發不建議使用。
HINSTANCE ShellExecute(
HWND hwnd, // 父視窗控制碼
LPCTSTR lpOperation, // 操作動詞:"open"、"print"、"explore"、NULL(預設)
LPCTSTR lpFile, // 目標檔案或可執行檔
LPCTSTR lpParameters,// lpFile 為可執行檔時的參數
LPCTSTR lpDirectory, // 工作目錄
INT nShowCmd // 顯示方式,同 WinExec
);
ShellExecute(Handle, "", "c:\\hdc.txt", "", "", SW_SHOWNORMAL);ShellExecute(Handle, "open", "notepad", "c:\\hdc.txt", "", SW_SHOWNORMAL);ShellExecute(Handle, "", "https://www.example.com", "", "", SW_SHOWNORMAL); / ShellExecute(Handle, "", "mailto:user@example.com", "", "", SW_SHOWNORMAL);在表單放置兩個 Label,Caption 分別設為網址與 mailto 連結,字體設藍色底線,Click 事件呼叫 ShellExecute(Handle, "", Label->Caption, "", "", SW_SHOWNORMAL); 即可實現超連結效果。
成功返回實例控制碼 (>32);失敗返回 ≤32 的錯誤碼(如 SE_ERR_FNF、SE_ERR_PNF、SE_ERR_ACCESSDENIED、SE_ERR_OOM 等),詳見 MSDN。
ShellExecuteEx 提供更精細控制(如等待結束、取得進程 ID),但較複雜且早期不支援 NT。建議統一使用 ShellExecute,功能完整涵蓋 WinExec 且支援檔案關聯、URL 協定,是現代 Windows 開發首選。