C# : WebBrowser コントロールのスクロール位置

わからずに検索して見つけた結果だが、わかりやすく整理して掲載。

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で、この方法で取得できたが他の方法では正しい値が来なかった。