C++ 使用COM Win32控制台应用程序隐藏IE时出现问题

C++ 使用COM Win32控制台应用程序隐藏IE时出现问题,c++,c,winapi,com,console,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 =

我对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);
 }
HRESULT-hr;
hr=协同初始化(空);
如果(失败(小时))
{
无法导航2(&vURL),
&vFlag,
&气势汹汹,,
&气势汹汹,,
&气势汹汹的);
如果(失败(小时))
{
不能退出();
出口(0)
}
谢谢你的帮助。:)


p.D:对不起我的英语。

尝试在
put\u Visible
旁边添加
put\u registerabrowser(VARIANT\u FALSE)
。您好,感谢您的回复。不幸的是,它不起作用,应用程序失败。当我发送“click”时也会出现此问题在带有PostMessage的链接上,将打开一个新选项卡,浏览器将可见。为什么要对非可视工作使用可视控件?
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)
}