IEでスクロールバーのイベントに反応する必要があるIE拡張(VS2008、C++を使用)を作成します。私はそのためにBHOを使用しており、IWebBrowser2要素、IHTMLDocument2要素、および親ウィンドウのHWNDにアクセスできます。私はスクロールバーにアクセスする方法を理解できません。スクロールバーオブジェクトを取得する方法(またはIEウィンドウの子ウィンドウですか?)ではなく、スクロールバーにアクセスできるようにするコードを見ました。何か案は?IEの拡張機能からWebページのスクロールを検出します。
1
A
答えて
0
答えはthisスレッドを参照してください。私の問題と正しい答えはここで正しく説明されています。
1
MSHTMLは、ネイティブのシステムコントロールを使用する代わりに、独自のスクロールバーを表示します。そのため、CSSルールを適用することができます。
私は何をしようとすると、次のとおりです。
- のQueryInterface()IHTMLElementためIHTMLDocument2 オブジェクト。
- QueryInterface()for IConnectionPointContainer。
- 次に、 IConnectionPointContainer :: FindConnectionPoint(DIID_HTMLElementEvents2)を呼び出します。
- IDispatch :: Invoke()と を実装すると、誰かが ドキュメントをスクロールするとOnScroll イベントが発生します。
- リンスしてサブフレームを繰り返す。
0
私はIDispatchImplが既に実装されているので、イベントを処理するためにIDispatch :: InvokeメソッドのATL実装をオーバーライドする必要があると思います。それが正しいか? その場合、DIID_DWebBrowserEvents2のシンクエントリがありますが、どのように影響を受けますか? はここに私のクラスには、次のようになります方法は次のとおりです。
class ATL_NO_VTABLE CHelloWorldBHO :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CHelloWorldBHO, &CLSID_HelloWorldBHO>,
public IObjectWithSiteImpl<CHelloWorldBHO>,
public IDispatchImpl<IHelloWorldBHO, &IID_IHelloWorldBHO, &LIBID_HelloWorldLib, /*wMajor =*/ 1, /*wMinor =*/ 0>,
public IDispEventImpl<1, CHelloWorldBHO, &DIID_DWebBrowserEvents2, &LIBID_SHDocVw, 1, 1>
{
.
.
.
BEGIN_SINK_MAP(CHelloWorldBHO)
SINK_ENTRY_EX(1, DIID_DWebBrowserEvents2, DISPID_DOCUMENTCOMPLETE, OnDocumentComplete)
SINK_ENTRY_EX(1, DIID_DWebBrowserEvents2, DISPID_BEFORENAVIGATE2, BeforeNavigate2)//Handle BeforeNavigate2
END_SINK_MAP()
.
.
.
}
おかげ
編集:私は起動が上書きされたときに、OnDOcumentCOmpleteが呼び出されないことを発見しました。これをどうやって回避するのですか?
関連する問題
- 1. クロム拡張機能の検出
- 2. Chrome拡張機能:コンテンツスクリプトのページからjavascript関数を呼び出します。
- 3. Chrome拡張機能 - 設定ページで拡張機能の画像
- 4. Firefox拡張機能からオペレーティングシステムを検出
- 5. Firefox拡張機能をBHOに移植する(ブラウザヘルパーオブジェクト、別名IE拡張機能)
- 6. Firefoxの拡張機能からWebページに要素を追加する方法
- 7. クロムアプリ/拡張機能にあることを検出します
- 8. Chrome拡張機能:拡張機能を使用して、ページ上のイベントをリッスンしますか?
- 9. Firefox拡張機能で読み込まれたページを検出するとき
- 10. Chromeの拡張機能:コンテンツスクリプトとWebページのスクリプト
- 11. FirefoxのWeb拡張機能からのJavascriptシェルコマンドの実行
- 12. セレクタからのプロトコル拡張機能の呼び出し
- 13. 拡張機能からのUIViewControllerの呼び出し関数
- 14. Firefox用のWeb拡張機能
- 15. Facebook Messenger Webアプリケーションのチャット機能拡張
- 16. 私のWeb拡張機能ではtabId
- 17. Web拡張機能:Firefoxのアップデートメニューandroid
- 18. Chrome拡張機能newtabページ本文を修正しますか?
- 19. traitは機能拡張機能を拡張していますか(A => B)?
- 20. Chrome拡張機能の設定ページ
- 21. Chrome拡張機能の背景ページ
- 22. Chrome拡張機能のページ機能を使用する
- 23. Chrome拡張機能 - Google reCAPTCHAの検索ページ
- 24. サイトからChrome拡張機能のバックグラウンド機能を呼び出す
- 25. 検索機能を拡張する
- 26. Firefox拡張機能のIPアドレス検索
- 27. VSTS拡張機能の検定プロセス
- 28. Windows Phoneの検索拡張機能
- 29. Chrome Dev Tools拡張機能からWebSocketsフレームを検査する
- 30. 拡張機能からFireFoxに検索エンジンプラグインをインストールする
お返事ありがとうございます。私はATLを使用しているので、私は自分のクラスにIDispEventImplの別の実装を持つことができたことに気付きました。しかし、ありがとう! – GotAmye