VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 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


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -