Что нового

Как сделать скриншот bmp неактивного окна

pvnn

Осваивающий
Сообщения
305
Репутация
32
Доброго времени суток.
Суть вопроса в заголовке темы.
Нашел следующий Код:
Код:
#include <GDIPlus.au3>
#include <WinAPI.au3>

Global $hwnd_win = WinGetHandle("Form_Test") ;вместо Window title пишем название окна, в котором ищем
Global $win_pos = WinGetPos($hwnd_win) ;получаем размеры окна и позицию
$hBMP = _WinCapture($hwnd_win, $win_pos[2], $win_pos[3])

Func _WinCapture($hWnd, $iWidth, $iHeight) ; скриншот окна
	;WinWaitActive("Form_Test","")
    Local $iH, $iW, $hDDC, $hCDC, $hBMP
    $hDDC = _WinAPI_GetDC($hWnd)
    $hCDC = _WinAPI_CreateCompatibleDC($hDDC)
    $hBMP = _WinAPI_CreateCompatibleBitmap($hDDC, $iWidth, $iHeight)
    _WinAPI_SelectObject($hCDC, $hBMP)
    _WinAPI_PrintWindow ($hWnd, $hCDC)
    ;_WinAPI_BitBlt($hCDC, 0, 0, $iW, $iH, $hDDC, 0, 0, 0x00330008)
    _WinAPI_ReleaseDC($hWnd, $hDDC)
    _WinAPI_DeleteDC($hCDC)
	_WinAPI_SaveHBITMAPToFile("2.bmp", $hBMP) 
EndFunc   ;==>_WinCapture

Программа, с которой нужно сделать скриншот для теста:
Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("Form_Test", 248, 91, -1, -1)
$Button1 = GUICtrlCreateButton("ОК", 80, 40, 75, 25)
GUISetState(@SW_SHOW)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
			MsgBox(0,'Внимание','Нажата клавиша ОК')
	EndSwitch
WEnd

Получается скриншот только заголовка (вложение)
Помогите разобраться.
 

Вложения

  • 2.jpg
    2.jpg
    4 КБ · Просмотры: 10
Верх