ウインドウを指定したデバイスコンテキストにコピー          <TOP>


ウインドウを指定したデバイスコンテキストにコピーします。

PrintWindow 表示されているウィンドウを指定したデバイスコンテキスト(通常はプリンタDC)にコピー

FindWindow ウインドウのハンドル取得

 

テストでは、フォームにメモ帳のイメージをコピーしています。デバイスコンテキスト(hDC)をButton、Pictureに置き換えるとそれらにイメージをコピーします。

※WindowsXP/2003以降

 

'================================================================
'= ウィンドウを指定のDCにコピー(WindowsXP/2003)
'=    (PrintWindow.bas)
'================================================================
#include "Windows.bi"

' 表示されているウィンドウを指定したデバイスコンテキスト(通常はプリンタDC)にコピー
Declare Function Api_PrintWindow& Lib "user32" Alias "PrintWindow" (ByVal hWnd&, ByVal hdcBlt&, ByVal nFlags&)

' ウインドウのハンドル取得
Declare Function Api_FindWindow& Lib "user32" Alias "FindWindowA" (ByVal lpClassName$, ByVal lpWindowName$)

' 指定されたウィンドウのクライアント領域または画面全体を表すディスプレイデバイスコンテキストのハンドルを取得
Declare Function Api_GetDC& Lib "user32" Alias "GetDC" (ByVal hWnd&)

' デバイスコンテキストを解放
Declare Function Api_ReleaseDC& Lib "user32" Alias "ReleaseDC" (ByVal hWnd&, ByVal hDC&)

'================================================================
'= 
'================================================================
Declare Sub Button1_on edecl ()
Sub Button1_on()
    Var hWnd As Long
    Var hDC As Long
    Var Ret As Long

    hDC = Api_GetDC(GethWnd)                     'フォームのDC取得
    hWnd = Api_FindWindow("Notepad", ByVal 0)    'メモ帳のハンドル取得

    If hWnd = 0 Then                             'メモ帳が見つからない場合は起動
        Shell "Notepad.exe"
        Wait 20
    End If

    hWnd = Api_FindWindow("Notepad", ByVal 0)    'メモ帳のハンドル取得
    Ret = Api_PrintWindow(hWnd, hDC, 0)          'フォームにメモ帳のイメージを描画
    Ret = Api_ReleaseDC(hWnd, hDC)               'DCの解放
End Sub

'================================================================
'=
'================================================================
While 1
    WaitEvent
Wend
Stop
End