我有以下代码
void reportResults()
{
wstring env(_wgetenv(L"ProgramFiles"));
env += L"\Internet Explorer\iexplore.exe";
wstringstream url;
url << "\"\"" << env.c_str() << "\" http://yahoo.com\"";
wchar_t arg[BUFSIZE];
url.get(arg, BUFSIZE);
wcout << arg << endl;
_wsystem(arg);
}
其中arg是: “”C:\ Program Files \ Internet Explorer \ iexplore.exe“http://yahoo.com”
该程序按预期运行,启动IE并导航到Yahoo,但调用函数(reportResults)永远不会退出。如何让程序退出让浏览器保持活动状态? 感谢。
答案 0 :(得分:7)
您想使用_wspawn()而不是_wsystem()。这将为浏览器进程生成一个新进程。 _wsystem()阻止您创建的命令;这就是为什么你没有回到你的代码。 _wspawn()创建一个新的独立进程,该进程应立即返回到您的代码。
答案 1 :(得分:6)
_wsystem命令将等待arg中的命令返回并返回命令的返回值。如果关闭Internet Explorer窗口,它会将命令返回给您的程序。
答案 2 :(得分:5)
为什么不使用ShellExecute启动具有给定网址的默认浏览器?
<强>梗概:强>
LONG r = ShellExecute(NULL, "open", "http://www.microsoft.com", NULL, NULL, SW_SHOWNORMAL);
修改强>
我想,因为它必须是IE,这可能有效(注意,未经测试的代码):
LONG r = ShellExecute(NULL, NULL, "iexplore.exe", "http://www.microsoft.com", NULL, SW_SHOWNORMAL);
答案 3 :(得分:0)
如果要使用当前实现,则必须fork()
进程并让子进程处理浏览器生成。因此,主要过程将继续并退出该功能。
答案 4 :(得分:0)
而不是执行
"C:\Program Files\Internet Explorer\iexplore.exe" "http://yahoo.com"
执行
start "C:\Program Files\Internet Explorer\iexplore.exe" "http://yahoo.com"