使用system()启动IE会导致第一次挂起

时间:2016-04-08 12:50:28

标签: c++ visual-c++

我已经使用system()在单击按钮的情况下在我的C ++代码中启动IE。 IE已启动,但cmd窗口也被打开并被挂起。我关闭cmd窗口,然后它顺利工作。当我第一次启动IE时,为什么会出现初始挂起?

2 个答案:

答案 0 :(得分:0)

原因是system()打开一个控制台并从那里调用命令。只有在Internet Explorer关闭时,控制台才会关闭。

使用CreateProcess或者您也可以使用START命令解决system()

system("start \"Internet Explorer\" \"C:\\Program Files\\Internet Explorer\\iexplore.exe\" www.google.com");

答案 1 :(得分:0)

此代码将使用CreateProcess启动IE。

但是,您可能希望使用将使用用户默认浏览器的ShellExecuteShellExecute(NULL, "open", "www.google.com", NULL, NULL, SW_SHOWDEFAULT);)。

const char *pathToExplorer = "C:\\Program Files\\Internet Explorer\\iexplore.exe";
const char *webPage = "www.google.com";

char szCmdLine[1024];
sprintf(szCmdLine, "\"%s\" \"%s\"", pathToExplorer, webPage);

STARTUPINFO si = {0};
PROCESS_INFORMATION lp;
si.cb = sizeof(STARTUPINFO);
::CreateProcess( NULL,
            szCmdLine,
            NULL,
            NULL,
            FALSE,
            CREATE_DEFAULT_ERROR_MODE | NORMAL_PRIORITY_CLASS,
            NULL,
            NULL,
            &si,
            &lp);