ウィンドウのキャプチャをしたいなら、対象ウィンドウを
最前面にして、全体が見える位置に移動させる方法を考えた方が
良いかも知れません。
http://yokohama.cool.ne.jp/chokuto/advanced/capturescreen.html
http://yokohama.cool.ne.jp/chokuto/advanced/capturewindow.html
非表示ではなく隠れてるだけならWM_PRINTでいけるかも?
#include "user32.as"
#include "gdi32.as"
#define WM_PRINT 0x0317
#define WM_PRINTCLIENT 0x0318
#define SRCCOPY 0x00CC0020
#define PRF_CHECKVISIBLE 0x00000001
#define PRF_NONCLIENT 0x00000002
#define PRF_CLIENT 0x00000004
#define PRF_ERASEBKGND 0x00000008
#define PRF_CHILDREN 0x00000010
#define PRF_OWNED 0x00000020
title "screen 0"
buf = "test"
mesbox buf, 200, 200, 5
color 255 : boxf : color : pos 200, 0
mes "WM_PRINTのテスト"
width ,,ginfo_dispx, ginfo_dispy // ディスプレイの外に
oncmd gosub *lb_OnPrintClient, WM_PRINTCLIENT
hwnd0 = hwnd
dim rect, 4
GetWindowRect hwnd0, varptr(rect)
screen 1, rect(2)-rect(0), rect(3)-Rect(1)
title "screen 1"
mes "2秒後screen 0にWM_PRINTを送ります"
wait 200
sendmsg hwnd0, WM_PRINT, hdc, PRF_NONCLIENT|PRF_CLIENT|PRF_CHILDREN
redraw
stop
*lb_OnPrintClient
if ginfo_intid != 0 : return
sel = ginfo_sel
gsel 0
// wParam=描画先のHDC
BitBlt wParam, 0, 0, ginfo_winx, ginfo_winy, hdc, 0, 0, SRCCOPY
gsel sel
return