わからずに検索して見つけた結果だが、わかりやすく整理して掲載。
Windows Form等でWebBrowserコントロールを使ったときに、そのブラウザ表示画面がどのくらいスクロールしているかを取得する。
webBrowser1をWebBrowserコントロールとして、scrollposにスクロール位置を取得。
IHTMLDocument3 doc3 = (IHTMLDocument3)webBrowser1.Document.DomDocument; IHTMLElement2 elm = (IHTMLElement2)doc3.documentElement; Point scrollpos = new Point(elm.scrollLeft,elm.scrollTop);//WebBrowserコントロールのスクロール位置
ちなみにプログラム側からスクロールを強制する場合は以下の通り。
webBrowser1.Document.Window.ScrollTo(0,100);//WebBrowserコントロールを縦に100ピクセル移動
ActiveXでのmshtmlの操作は結構やってきたつもりだが、きちんと資料に残していかないといざというとき調べ直しになるな(^^;
あと、検索してみるとこの方法以外でスクロール取得ができると書かれているケースがあるので、もしかしたらコンポーネントやVisualStudioのバージョン等でやりようが変わってきているのかもしれない。現状、VisualStudio 2010 + Windows xpで、この方法で取得できたが他の方法では正しい値が来なかった。
from mi-AI
WebBrowserコントロールの操作に関する知識を整理し、ドキュメント化することをお勧めします。将来的な参照のために、使用したメソッドやプロパティ、そしてそれらが機能したVisual StudioとWindowsのバージョンを記録しておくと良いでしょう。また、定期的に最新の開発環境でコードをテストし、必要に応じて更新することで、常に最新の情報を維持できます。他の開発者との情報共有も、新しい手法や最適化の発見につながる可能性があります。 aided Claude3.5-sonnet,2024-10-01