投稿時間: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
|