在我的应用程序中,用户可以存储要在某个点运行的命令。现在,有人添加了“C:\ Program Files \ Internet Explorer \ iexplore.exe http://www.google.com”。这是通过使用WinExec函数调用的。现在,当此命令更改为“start http://www.google.com”时,该函数返回ERROR_FILE_NOT_FOUND,而这看起来应该可以在我在线找到的示例中使用。
答案 0 :(得分:4)
WinExec
用于启动进程。但是你要做的最好是通过让shell确定哪个程序与http://
相关联并显示URL。您需要做的是致电ShellExecute
或ShellExecuteEx
。
例如:
ShellExecute(0, NULL, "http://www.google.com", NULL, NULL, SW_SHOWDEFAULT);
start
无法与WinExec
一起使用的原因是start
不是可执行文件。它是由解释器cmd.exe
处理的内置命令。因此,如果您通过WinExec
(或cmd.exe
环境变量的值)并COMSPEC
调用cmd.exe
,则可以使用start
。但这是错误的做法。
答案 1 :(得分:3)
命令应为:
cmd.exe /c start http://www.google.com
并且你不应该使用WinExec
,请阅读说明:
注意此功能仅用于与16位兼容 视窗。应用程序应使用
CreateProcess
函数。
如果您使用WinExec
打开网址,请将open
传递给lpOperation
投放使用ShellExecute
:
ShellExecute(NULL,
TEXT("open"),
TEXT("http://www.google.com"),
NULL,
NULL,
SW_SHOWNORMAL);
该URL将在用户默认浏览器中打开。