none
如何隐藏启动IE11? RRS feed

  • 问题

  • 我写了一段代码,想隐藏打开PC上的IE,向一个URL上报数据。

    STARTUPINFO si;
    ZeroMemory(&si, sizeof(si));
    GetStartupInfo(&si);		
    si.dwFlags = STARTF_USESHOWWINDOW;
    si.wShowWindow = SW_HIDE;
    
    PROCESS_INFORMATION pi;
    ZeroMemory(&pi, sizeof(pi));
    		
    CreateProcess(szIEPath, szOpenAddrCmd, NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, NULL, &si, &pi)) 

    其中,szIEPath是IE的地址,szOpenAddrCmd是启动参数,比如“open http://127.0.0.1”,这段代码在IE9下能正常工作,但是升级到IE11后,就不能隐藏打开IE11了。

    请问,要怎样才能隐藏打开IE11呢?

    2014年11月25日 2:28

全部回复

  • 你好:

          我在我这边的windows8.1 和IE11的机子上的vs2013上测试过了,的确不能隐藏打开IE11。在我的测试sample里CreateProcess函数GetLastError返回的code是errror 203:

    ERROR_ENVVAR_NOT_FOUND203 (0xCB)
    The system could not find the environment option that was entered.
    

    发现这个错误后,我感觉跟权限有关,发现用SW_SHOWMINIMIZED用管理员权限运行生成的exe,可以隐藏IE的,只能打开任务管理器里才能找到运行的IE 程序了。而且只要你重现运行我的sample,如果前一个隐藏打开的IE没有结束任务,重现运行后就会出现。当然结束隐藏打开的IE任务后就没事了。你可以参考一下我的测试结果。测试的sample很简单用了你给的代码:

    #include "stdafx.h"
    #include "windows.h"
    #include "iostream"
    
    int _tmain(int argc, _TCHAR* argv[])
    {	
    	TCHAR cmd[ MAX_PATH ] = TEXT("C:\\Program Files\\Internet Explorer\\iexplore.exe");
    	
    	STARTUPINFO si;
    	ZeroMemory(&si, sizeof(si));
    	GetStartupInfo(&si);		
    	si.dwFlags = STARTF_USESHOWWINDOW;
    	si.wShowWindow = SW_SHOWMINIMIZED;
    
    	PROCESS_INFORMATION pi;
    	ZeroMemory(&pi, sizeof(pi));
    		
    	BOOL b=CreateProcess(NULL, cmd, NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, NULL, &si, &pi);
    	int err=GetLastError();
    	std::cout<<b;
    	return 0;
    }

    在你的项目中得到的error code 是什么?在IE9下面GetLastError的返回值又是什么呢。我准备去找台windows7的机子装IE9测试一下。希望这对你有帮助。

    Shu Hu


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年11月26日 7:51