Что нового

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

Sergey2210

Осваивающий
Сообщения
263
Репутация
31
Версия AutoIt: 3.

Описание: Здравствуйте,понадобилась функция для снятия скриншота свёрнутого и не активного окна по его Title

Примечания: Только с применением этой dll если можно

Код:
Func _WinCap_Screen($hWnd,$hFile,$hQuality = 85)
Global $pQuality = $hQuality
WinWait($hWnd,"")
$hPos = WinGetPos($hWnd)
DllCall("captdll.dll","int:cdecl","CaptureRegion","str",$hFile,"int",$hPos[0],"int",$hPos[1],"int",$hPos[2],"int",$hPos[3],"int",$pQuality)
EndFunc
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
В этой dll всего две функции: CaptureRegion() и CaptureScreen(). Ничем особым они не отличаются от _ScreenCapture_Capture() и не могут делать скриншоты свернутых окон.
 
Автор
S

Sergey2210

Осваивающий
Сообщения
263
Репутация
31
Ясно,а хотя бы не активных получится?
 

Mstislaw

Новичок
Сообщения
1
Репутация
0
Вот рабочая функция на основе PrintWindow по получению скрина неактивного окна. Если применить к свернутому окну то получаешь только картинку заголовка окна). Иногда выдает черный квадрат по размерам фотографируемого окна...вроде помогает пауза перед вызовом длл и повторный снимок если вышел черный прямоугольник, но в чем причина я не знаю.
Кстати если кто знает почему иногда получается черный экран, объясните.

Код:
Func _CaptureWin($hWnd)
   
   Local $w = _WinAPI_GetWindowWidth($hWnd)
   Local $h = _WinAPI_GetWindowHeight($hWnd)
   Local $hDC_Capture = _WinAPI_GetWindowDC($hWnd)
   Local $hMemDC = _WinAPI_CreateCompatibleDC($hDC_Capture)
   Local $hHBitmap = _WinAPI_CreateCompatibleBitmap($hDC_Capture, $w, $h)
   Local $hObject = _WinAPI_SelectObject($hMemDC, $hHBitmap)
	
	Sleep(100)
	
    DllCall("user32.dll", "int", "PrintWindow", "hwnd", $hWnd, "handle", $hMemDC, "int", 0)
    
    Local $hObject = _WinAPI_SelectObject($hMemDC, $hObject)
    Local $hBmp = _GDIPlus_BitmapCreateFromHBITMAP($hHBitmap)
	
    _WinAPI_DeleteObject($hHBitmap)
	
    Return $hBmp
	
 EndFunc ;==> _CaptureWin
 
Верх