簡體   English   中英

在新標簽頁中打開URL(Internet Explorer)

[英]Open URL in new tab (Internet Explorer)

我正在為Internet Explorer開發自定義工具欄(添加了一個工具欄按鈕)。 我用COM編寫了代碼。 當用戶單擊我的工具欄按鈕時,我需要在新選項卡中打開一個URL。 我寫了如下的導航功能。 此函數無法在新選項卡中打開URL,並且始終返回E_FAIL。

HRESUTL Navigate(CString csUrl) {
ATLASSERT(0 <= Url.Length());
ATLASSERT(m_pWebBrowser);

if (m_pWebBrowser == NULL) {
    return E_FAIL;
}

m_pWebBrowser->Stop();

VARIANT vUrl;
vUrl.vt = VT_BSTR;
vUrl.bstrVal = csUrl.AllocSysString();

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

VARIANT vEmpty;
VariantInit(&vEmpty);

HRESULT hr = m_pWebBrowser->Navigate2(&vUrl, &vFlag, &vEmpty, &vEmpty, &vEmpty);

if (hr == E_OUTOFMEMORY)
    MessageBox(NULL, L"Out of Memory.", L"Navigate", MB_OK);
else if (hr == E_INVALIDARG || hr == E_FAIL)
    MessageBox(NULL, L"Failed to navigate.", L"Navigate", MB_OK);

::SysFreeString(vUrl.bstrVal);

ATLASSERT(SUCCEEDED(hr));

return hr; }

我需要為“ Navigate2”方法傳遞什么參數才能在新選項卡中打開URL。

請給我建議。

問候,桑索什

我正在為IE創建工具欄。

這是我的SetSite方法

HRESULT CMyClass::SetupBrowser(IUnknown* pUnkSite) {
ATLASSERT(pUnkSite);
HRESULT hr = E_FAIL;

IOleCommandTarget* pCmdTarget = NULL;   
if (SUCCEEDED(pUnkSite->QueryInterface(IID_IOleCommandTarget,
                        (LPVOID*)&pCmdTarget)) && NULL != pCmdTarget) {
    IServiceProvider* pSP = NULL;
    if (SUCCEEDED(pCmdTarget->QueryInterface(IID_IServiceProvider,
                                (LPVOID*)&pSP)) && NULL != pSP) {
        CComPtr<IServiceProvider> child_provider;
        hr = pSP->QueryService(SID_STopLevelBrowser,
                               IID_IServiceProvider,
                               reinterpret_cast<void**>(&child_provider));
        if (SUCCEEDED(hr)) {
            hr = child_provider->QueryService(SID_SWebBrowserApp,
                                              IID_IWebBrowser2,
                                              reinterpret_cast<void**>(&m_pWebBrowser));
        }

        /*hr = pSP->QueryService(SID_SWebBrowserApp,
                                IID_IWebBrowser2,
                                (LPVOID*)&m_pWebBrowser);*/
        ATLASSERT(m_pWebBrowser);
        pSP->Release();
    }
    pCmdTarget->Release();
}

m_ReflectWnd.GetToolBar().SetBrowser(m_pWebBrowser);

return hr; }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM