簡體   English   中英

WinExec與啟動命令給出ERROR_FILE_NOT_FOUND

[英]WinExec with start command gives ERROR_FILE_NOT_FOUND

在我的應用程序中,用戶可以存儲要在特定點運行的命令。 現在,有人添加了“ C:\\ Program Files \\ Internet Explorer \\ iexplore.exe http://www.google.com ”。 這是通過使用WinExec函數來調用的。 現在,當此命令更改為“ start http://www.google.com ”時,該函數將返回ERROR_FILE_NOT_FOUND,而這似乎應該可以從我在網上找到的示例中找到。

WinExec用於啟動進程。 但是,您要嘗試執行的操作最好是通過讓Shell找出與http://關聯的程序並顯示URL來完成。 您需要做的就是調用ShellExecuteShellExecuteEx

例如:

ShellExecute(0, NULL, "http://www.google.com", NULL, NULL, SW_SHOWDEFAULT);

start不適用於WinExec的原因是start不是可執行文件。 這是由解釋器cmd.exe處理的內置命令。 因此,如果您傳遞cmd.exe (或COMSPEC環境變量的值)並讓cmd.exe調用start則可以使用WinExec 但這是錯誤的方法。

該命令應為:

cmd.exe /c start http://www.google.com

並且您不應該使用WinExec ,請閱讀以下說明:

注意僅提供此功能是為了與16位Windows兼容。 應用程序應使用CreateProcess函數。

如果使用WinExec來打開URL,請通過將open傳遞給lpOperation來使用ShellExecute

ShellExecute(NULL,
             TEXT("open"),
             TEXT("http://www.google.com"),
             NULL,
             NULL,
             SW_SHOWNORMAL);

該URL將在用戶默認瀏覽器中打開。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM