我想从IE打开html文件。
所以,我使用像这样的ShellExecute API。
ShellExecute(NULL, L"open", html file path, NULL, NULL, SW_SHOW);
但是,我的默认浏览器是Chrome。
Html文件向Chrome新标签页打开。
所以,我试试这个。
ShellExecute(NULL, L"open", IE file path, html file path, NULL, SW_SHOW);
我将参数设置为html文件路径。
但是,该方法是创建新窗口。
我想从IE打开html文件。(新标签!)
感谢。
答案 0 :(得分:1)
您必须使用ShellWindows实例在Internet Explorer中打开新选项卡,而不是ShellExecute。检查从Warwick Systems获取的代码来完成此操作:
void OutputToWebBrowser(const CString & path)
{
IShellWindows *psw;
HRESULT hr = CoCreateInstance(CLSID_ShellWindows,NULL,CLSCTX_ALL,IID_IShellWindows,(void**)&psw);
if (!SUCCEEDED(hr))
return;
IWebBrowser2* pBrowser2 = 0;
bool found = false;
long nCount = 0;
hr = psw->get_Count(&nCount);
if (SUCCEEDED(hr))
{
for (long i = nCount - 1; (i >= 0) && (!found); i--) {
// get interface to item no i
_variant_t va(i, VT_I4);
IDispatch * spDisp;
hr = psw->Item(va,&spDisp);
hr = spDisp->QueryInterface(IID_IWebBrowserApp,(void **)&pBrowser2);
if (SUCCEEDED(hr))
{
BSTR name;
pBrowser2->get_FullName(&name);
CString n(name);
if (n.Find("IEXPLORE") == -1)
pBrowser2->Release();
else
found = true;
}
}
psw->Release();
}
if (!found)
hr = CoCreateInstance(CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER,IID_IWebBrowser2,(void**)&pBrowser2);
if (SUCCEEDED(hr))
{
VARIANT vEmpty;
VariantInit(&vEmpty);
_variant_t URL, Flag, TargetFrameName, PostData, Headers;
Flag.ChangeType(VT_I4, &Flag);
if (found)
Flag.intVal = 0x800;
URL.SetString(path);
hr = pBrowser2->Navigate2(&URL, &Flag, &vEmpty, &vEmpty, &vEmpty);
if (SUCCEEDED(hr))
{
pBrowser2->put_Visible(TRUE);
}
else
{
pBrowser2->Quit();
}
pBrowser2->Release();
}
}