IE打开新标签页的方法

How open the new tab from IE

我想从 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 文件路径。

但是,那个方法是创建新的window。

我想从 IE 打开 html 文件。(新标签页!)

谢谢。

您必须使用 Shell Windows 实例来在 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();
   }
}