-1

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

4

2 回答 2

4

WinExec用于启动进程。但是您要做的最好的方法是让外壳程序确定与哪个程序相关联http://并显示与之相关的 URL。您需要做的是调用ShellExecuteShellExecuteEx

例如:

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

start不起作用的原因是WinExecstart不是可执行文件。它是由解释器处理的内置命令,cmd.exe. 因此,WinExec如果您传递cmd.exe(或COMSPEC环境变量的值)并cmd.exe调用start. 但这是错误的做法。

于 2013-08-28T10:33:54.310 回答
4

命令应该是:

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

你不应该使用WinExec,请阅读说明:

注意 提供此功能仅是为了与 16 位 Windows 兼容。应用程序应使用该CreateProcess功能。

如果您WinExec用于打开 URL,请ShellExecute通过传递openlpOperationinsted 来使用:

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

该 URL 将在用户默认浏览器中打开。

于 2013-08-28T11:02:34.280 回答