投稿日 | : 2003/07/14(Mon) 18:11 |
投稿者 | : 魔界の仮面弁士 |
Eメール | : |
URL | : |
タイトル | : Re: Webページをクリップボードにキャプチャーするには |
クリップボードに渡したいのは、どんな形式ですか?
HTMLテキスト形式でしょうか、OEMテキスト形式でしょうか、
それとも、画面イメージのビットマップを得たいのでしょうか?
HTMLテキスト形式で得たいのであれば、ExecWBメソッドを使って、
OLECMDID_SELECTALL と OLECMDID_COPY を呼び出してやるのが簡単かと思います。
# …これに付いては、花ちゃんさんが既に回答されていたようですね。(汗)
そして、画面イメージの画像を得たい場合は、OleDraw APIを使う事ができます。
OleDrawにて、WebBrowser.object、もしくは WebBrowser.document を渡せば、
任意のデバイスコンテキストに、現在のサイズの画像情報が描画されます。
この場合、得られる画像の縦横のサイズは、WebBrowser自身のサイズに依存しますので、
場合によっては、currentStyleプロパティ経由で、表示されている内容のサイズを取得し、
それに合わせて、WebBrowserのサイズを、逐次、再設定する必要があります。
http://www.microsoft.com/japan/developer/library/jpisdk/dhtml/measure/measuring.htm#chp_measuring
# 必要に応じて、bodyオブジェクトやhtmlオブジェクトのruntimeStyleプロパティに対して、
# overflowX や overflowY を指定して、スクロールバーを除去してやると、見た目にも綺麗かも。
とりあえず、サイズの計算は面倒なので(^^;、OleDraw の方だけのサンプルを挙げておきます。
ここでは、フォームに対して出力させていますので、Formに対して、
.SclaeMode = vbPixel、.AutoRedraw = True の指定を施しておいて下さい。
Option Explicit
Private Enum DVASPECT
DVASPECT_CONTENT = 1
DVASPECT_THUMBNAIL = 2
DVASPECT_ICON = 4
DVASPECT_DOCPRINT = 8
End Enum
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Declare Function OleDraw Lib "ole32.dll" _
(ByVal pUnk As Object, _
ByVal dwAspect As DVASPECT, _
ByVal hdcDraw As Long, _
ByRef lprcBounds As RECT) As Long
Private Sub DrawContents()
Dim r As RECT
Dim e As Long
If WebBrowser1.Busy Then
Exit Sub
End If
r.Top = 0
r.Bottom = 0
r.Right = ScaleWidth
r.Bottom = ScaleHeight
Cls
e = OleDraw(WebBrowser1.Document, DVASPECT_CONTENT, hDC, r)
' If e <> 0 Then
' '例外が発生した場合の処理
' Err.Raise e
' End If
Refresh
End With