C++系统函数挂起应用程序

Jon*_*Jon 1 c++ process

我有以下代码

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)永远不会退出.如何让程序退出让浏览器保持活动状态?谢谢.

Pau*_*ier 7

您想使用_wspawn()而不是_wsystem().这将为浏览器进程生成一个新进程._wsystem()阻止您创建的命令; 这就是为什么你没有回到你的代码._wspawn()创建一个新的独立进程,该进程应立即返回到您的代码.


hea*_*vyd 6

_wsystem命令将等待arg中的命令返回并返回命令的返回值.如果关闭Internet Explorer窗口,它将返回命令返回到您的程序.


Eva*_*ran 5

为什么不使用ShellExecute启动具有给定URL的默认浏览器?

概要:

LONG r = ShellExecute(NULL, "open", "http://www.microsoft.com", NULL, NULL, SW_SHOWNORMAL);
Run Code Online (Sandbox Code Playgroud)

编辑:

我想因为它必须是IE,这可能有用(注意,未经测试的代码):

LONG r = ShellExecute(NULL, NULL, "iexplore.exe", "http://www.microsoft.com", NULL, SW_SHOWNORMAL);
Run Code Online (Sandbox Code Playgroud)