gooのトップページをキャプチャした画像。goo.bmp(9.26MB)
- 1.InternetExplorerオブジェクトを取得
- IEを新規に開くか、すでに開いているIEを取得する。
- 2.IEの表示部分のWindowハンドルを取得
- IEのWindowハンドルから子ウインドウをクラス名で辿る。
"Frame Tab" → "TabWindowClass" → "Shell DocObject View" - 3.2で取得したWindowハンドルからBitmapを作成
- 2のWindowハンドルからDCを取得 → 互換DCを作成 → 互換DCの互換Bitmapを作成。作成するBitmapの幅と高さは、document.body.scrollWidth / scrollHeight
- 4.IEのDCから互換DCへ描画
- ドキュメントが1画面に収まらない場合は、描画 → スクロール → 描画 …と繰り返す。
- 5.Bitmapを保存する
- クリップボードにコピーする場合はBitmapハンドルを渡すだけ。
ファイルに作成する場合は、ヘッダーを作成しBitmapをバッファに取得して書き込む。
高速だし、すばらしいです!
公開していただきありがとうございます。
・画像にマウスカーソルを合成させる
・スクロール位置を元に戻す
という機能追加をしたいと思っているのですが、
自分ではできないまま、一か月がたってしまいました。
もしよろしければアドバイスいただけないでしょうか。
キャプチャ前の、スクロール位置を取得したいのですが、
どうしても scrollTop プロパティが取得できず0が帰ってきます。。
ウォッチで見るとみられるのですが。。
もしお時間ある時に、
アドバイスいただけると嬉しいです。
scrollTopはdocument.documentElement.scrollTopで取得できます。
マウスカーソルの合成は、WindowsAPIのGetCursorとDrawIconを使えばできると思います。
仕事場でしか見られないので(普通は逆)
お返事が遅くなり申し訳ありません。
で、できました!
教えていただいた書き方でScrollTopが取得できました!
本当にありがとうございます。
なんて素敵なひとだ。。
感動しました。。
(それにしても、相当さがしましたが、
インターネットで見つけられなかったのですが。。)
大変素晴らしく、こんな凄いものを公開して頂き有難うございます。
ですが、問題が発生してしまいました。
私の開発環境では、IE10までだったので、問題なくキャプチャーされていたのですが、
お客様の環境がIE11になり、キャプチャーして貼り付けた画像が真っ白な状態になりました。
スクロールもするし、貼り付けた画像の大きさもキャプチャー元の画像の大きさと同じなので、ハンドルはちゃんと取れていると思うのですが、何故か真っ白になってしまいます。
どうか、アドバイスを頂けないでしょうか?
宜しくお願い致します。
IE11は何故かデバイスコンテキストから画像が取得できないので真っ白になるようです。
モジュールを更新してIE11用の"IEShot4IE11"という関数を追加しましたのでこちらを試してみて下さい。
尚、この関数を使う前にVBAエディタのツールメニューの参照設定で"Microsoft HTML Object Library"をチェックしといてください。
http://www.ryokurian.jp/atelier/ieshot/