たぶんこんな面倒なことしなくてもできるはずですが..
参考:
http://chokuto.ifdef.jp/advanced/capturewindow.html
#module
#uselib "user32.dll"
#cfunc GetDC "GetDC" int
#cfunc GetWindowDC "GetWindowDC" int
#func ReleaseDC "ReleaseDC" int,int
#cfunc GetForegroundWindow "GetForegroundWindow"
#cfunc GetDesktopWindow "GetDesktopWindow"
#func GetWindowRect "GetWindowRect" int,int
#func GetClientRect "GetClientRect" int,int
#uselib "gdi32.dll"
#func BitBlt "BitBlt" int,int,int,int,int,int,int,int,int
#define NULL 0
#define SRCCOPY 0x00CC0020
#define CAPTUREBLT 0x40000000
#deffunc CaptureWindow int hwndTarget, int clientOnly
; ウィンドウのサイズ取得
dim rect, 4 ; RECT構造体
if clientOnly {
GetClientRect hwndTarget, varptr(rect)
} else {
GetWindowRect hwndTarget, varptr(rect)
}
if stat == 0 {
return 1 ; エラー発生時 stat = 1
}
sx = rect(2) - rect(0)
sy = rect(3) - rect(1)
; 現在の描画先バッファウィンドウをコピー先として初期化
buffer ginfo_sel, sx, sy, 0
; デバイスコンテキストのハンドル取得
if clientOnly {
hdcTarget = GetDC(hwndTarget)
} else {
hdcTarget = GetWindowDC(hwndTarget)
}
; 画像をコピー
BitBlt hdc, 0, 0, sx, sy, hdcTarget, 0, 0, SRCCOPY | CAPTUREBLT
; デバイスコンテキスト解放
ReleaseDC hwndTarget, hdcTarget
return 0 ; 正常終了時 stat = 0
; ======== アクティブウィンドウのキャプチャ ========
#deffunc CaptureActiveWindow int clientOnly
; アクティブウィンドウのハンドルを取得してウィンドウキャプチャ
CaptureWindow GetForegroundWindow(), clientOnly
return
; ======== デスクトップ画面のキャプチャ ========
#deffunc CaptureDesktopScreen
; デスクトップウィンドウのハンドルを取得してウィンドウキャプチャ
CaptureWindow GetDesktopWindow()
return
#global
*capture
; 押されたボタンのオブジェクトIDを取得
pressedButtonId = stat
; ===== 画面のキャプチャ =====
gsel 0, 1 ; ウィンドウをいったん消す
buffer 2, 1, 1 ; コピー用バッファ画面(サイズはダミー、とりあえず1×1)
CaptureActiveWindow 0
pget 10,5
boxf
gsel 0,1
celput 2
stop