带有start命令的WinExec给出了ERROR_FILE_NOT_FOUND

时间:2013-08-28 10:21:58

标签: windows winapi

在我的应用程序中,用户可以存储要在某个点运行的命令。现在,有人添加了“C:\ Program Files \ Internet Explorer \ iexplore.exe http://www.google.com”。这是通过使用WinExec函数调用的。现在,当此命令更改为“start http://www.google.com”时,该函数返回ERROR_FILE_NOT_FOUND,而这看起来应该可以在我在线找到的示例中使用。

2 个答案:

答案 0 :(得分:4)

WinExec用于启动进程。但是你要做的最好是通过让she​​ll确定哪个程序与http://相关联并显示URL。您需要做的是致电ShellExecuteShellExecuteEx

例如:

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将在用户默认浏览器中打开。