1

Internet Explorer のブラウザー拡張機能を作成しています。目標は、ユーザーがツールバーのボタンをクリックして、ユーザーが現在アクセスしている可能性のあるサイトに html を挿入できるようにすることです。

私のクラスは IOleCommandTarget と IObjectWithSite を実装しており、レジストリに情報を追加することでツールバー ボタンを表示することができましたが、html ドキュメントにアクセスして操作することはできません。いくつかのデバッグで、最初に IObjectWithSite.SetSite メソッドに行き着き、次に IOleCommandTarget.Exec メソッドに行き着くことがわかりました。ソリューションを BHO として実装すると、SetSite メソッドで webbrowser イベントをサブスクライブできますが、Exec メソッドで同じことをしようとすると、WebBrowser へのキャストが失敗します。この非常に小さくてシンプルな拡張機能を構築するにはどうすればよいですか?

4

1 に答える 1

1

Toolbar.h

CComQIPtr<IWebBrowser2, &IID_IWebBrowser2> m_spWebBrowser2;

ツールバー.cpp

STDMETHODIMP Toolbar::SetSite(IUnknown *pUnkSite)
{
    HRESULT hr;
    CComQIPtr<IServiceProvider> sp = pUnkSite;
    if(!m_spWebBrowser2 && sp)
    {
        //BHO immediately eotjiman ToolBar does not get it to the Obtained through QueryService.
        sp->QueryService(IID_IWebBrowserApp, IID_IWebBrowser2, (void**)&m_spWebBrowser2);
    }
    else
    {
        m_spWebBrowser2.Release();
        return E_POINTER;
    }

    .
    .
    .
}

私はそれが役立つことを願っています:)

于 2012-08-06T08:13:12.467 に答える