在我的应用程序中,用户可以存储要在某个时间点运行的命令。现在,有人添加了“C:\Program Files\Internet Explorer\iexplore.exe http://www.google.com ”。这是通过使用 WinExec 函数调用的。现在,当此命令更改为“start http://www.google.com ”时,该函数返回一个 ERROR_FILE_NOT_FOUND,而从我在网上找到的示例看来,这应该可以工作。
问问题
3591 次
2 回答
4
WinExec
用于启动进程。但是您要做的最好的方法是让外壳程序确定与哪个程序相关联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
. 但这是错误的做法。
于 2013-08-28T10:33:54.310 回答
4
命令应该是:
cmd.exe /c start http://www.google.com
你不应该使用WinExec
,请阅读说明:
注意 提供此功能仅是为了与 16 位 Windows 兼容。应用程序应使用该
CreateProcess
功能。
如果您WinExec
用于打开 URL,请ShellExecute
通过传递open
给lpOperation
insted 来使用:
ShellExecute(NULL,
TEXT("open"),
TEXT("http://www.google.com"),
NULL,
NULL,
SW_SHOWNORMAL);
该 URL 将在用户默认浏览器中打开。
于 2013-08-28T11:02:34.280 回答