[英]WritePrivateProfileString produces 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來完成。 您需要做的就是調用ShellExecute
或ShellExecuteEx
。
例如:
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.