我对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:对不起我的英文。