使用COM Win32控制台应用程序隐藏IE的问题

时间:2014-03-25 02:37:30

标签: c++ c winapi com console

我对COM有一个小问题。我用COM编写了一个控制台程序,它打开了隐藏给用户的Internet Explorer,并在后台运行。好吧,问题是当打开一个新选项卡时,浏览器变得可见。 ¿为什么会这样? ......我可以阻止这种行为吗?

代码:

HRESULT hr;
hr = CoInitialize(NULL);

if (FAILED(hr))
{
    cout << "Error ConInitialize\n";
    exit(0);
} 

IWebBrowser2 *pwb2;

hr = CoCreateInstance(CLSID_InternetExplorer,
                      NULL,
                      CLSCTX_ALL,
                      IID_IWebBrowser2,
                      (void**)&pwb2);

if (FAILED(hr))
{   
    cout << "Error CoCreateInstance\n";
    exit(0);
}

hr = pwb2->put_Visible(VARIANT_FALSE);  // Turn on hidden, works fine.

if (FAILED(hr))
{
    cout << "Error blah blah\n";
    pwb2->Quit();
    exit(0);
 }


这将打开一个新选项卡,但浏览器变为可见... 为什么?如果这是以前隐藏的。

VARIANT vURL;
vURL.vt        = VT_BSTR;
vURL.bstrVal   = SysAllocString(L"URL_TO_BACKOFFICE");

VARIANT vFlag;
vFlag.vt       = VT_I4;
vFlag.intVal   = 2048;

VARIANT vEmpty;
VariantInit(&vEmpty);

hr = pwb2->Navigate2(&vURL,
                     &vFlag,
                     &vEmpty,
                     &vEmpty,
                     &vEmpty);

if (FAILED(hr))
{
    cout << "Error to open Tab.\n";
    pwb2->Quit();
    exit(0)
}

感谢任何帮助。 :)

P.D:对不起我的英文。

0 个答案:

没有答案