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. Chrome拡張機能:拡張機能を使用して、ページ上のイベントをリッスンしますか?
- 7. Firefoxの拡張機能からWebページに要素を追加する方法
- 8. Firefox拡張機能で読み込まれたページを検出するとき
- 9. Chromeの拡張機能:コンテンツスクリプトとWebページのスクリプト
- 10. traitは機能拡張機能を拡張していますか(A => B)?
- 11. Chrome拡張機能newtabページ本文を修正しますか?
- 12. Chrome拡張機能のページ機能を使用する
- 13. Chrome拡張機能の背景ページ
- 14. サイトからChrome拡張機能のバックグラウンド機能を呼び出す
- 15. 検索機能を拡張する
- 16. Firefox拡張機能のIPアドレス検索
- 17. Windows Phoneの検索拡張機能
- 18. Chrome Dev Tools拡張機能からWebSocketsフレームを検査する
- 19. 拡張機能からFireFoxに検索エンジンプラグインをインストールする
- 20. ページJavaScript拡張機能を呼び出すJavaScript
- 21. Chrome拡張機能のアンインストールの検出方法
- 22. Chrome拡張機能からフレームのコンテンツにアクセスしますか?
- 23. 拡張機能/アドオンの機能を呼び出す
- 24. Safari拡張機能、ツールバーからページ/コンテンツに直接アクセスする?
- 25. mimeタイプからChrome拡張機能をトリガーまたは呼び出します
- 26. NSISインストーラからChrome拡張機能をインストールしますか?
- 27. 拡張機能
- 28. Chrome拡張機能asyncコールバックからのsendRequestが機能しませんか?
- 29. 拡張機能からchrome:// syncページを読むことはできますか?
- 30. アクションバーシャーロック検索ウィジェットの拡張機能が動作しません
お返事ありがとうございます。私はATLを使用しているので、私は自分のクラスにIDispEventImplの別の実装を持つことができたことに気付きました。しかし、ありがとう! – GotAmye