Здравствуйте.
Помогите.
Ума не приложу что не так.
Скрипт действует как аналог Fraps - должен делать скриншоты полноэкранного приложения RedFraction.exe
Но что-то все скриншоты - похожи один на другой - полностью идентичны.
Запускаю другое приложение - там вообще полностью черные скриншоты.
Третье приложение запускаю - там скриншоты нормальные делаются.
Ответьте - как снять скриншоты с полноэкранного приложения - надежно ?
Помогите.
Ума не приложу что не так.
Скрипт действует как аналог Fraps - должен делать скриншоты полноэкранного приложения RedFraction.exe
Но что-то все скриншоты - похожи один на другой - полностью идентичны.
Запускаю другое приложение - там вообще полностью черные скриншоты.
Третье приложение запускаю - там скриншоты нормальные делаются.
Ответьте - как снять скриншоты с полноэкранного приложения - надежно ?
Код:
#include <WinAPIProc.au3>
#include <ScreenCapture.au3>
#include <WindowsConstants.au3>
Global $sProcess = 'soa.exe'
;HotKeySet('{ESC}', '_Exit')
HotKeySet('й', '_Screen')
HotKeySet('q', '_Screen')
While Sleep(200)
WEnd
Func _Screen()
Local $iPID, $aWinArray, $aWinArray[1][0], $aClientSize, $hDC, $hMemDC, $hHBitmap, $hObj, $hBitmap
Local Static $i
$iPID = ProcessExists($sProcess)
If Not $iPID Then Return TrayTip('Screen', 'Процесс "' & $sProcess & '" не найден.', 10, 3)
$aWinArray = _WinAPI_EnumProcessWindows($iPID)
If @error Then Return TrayTip('Screen', 'Окно не существует', 10, 3)
;_ArrayDisplay($aWinArray, '$aWinArray') ; <<<<<<<<<<<<<<<<<<<<<<<< П Р О В Е Р К А >>>>>>>>>>>>>>>>>>>>>>>>
WinActivate($aWinArray[1][0])
$aClientSize = WinGetClientSize($aWinArray[1][0])
$hDC = _WinAPI_GetDC($aWinArray[1][0])
$hMemDC = _WinAPI_CreateCompatibleDC($hDC)
$hHBitmap = _WinAPI_CreateCompatibleBitmap($hDC, $aClientSize[0], $aClientSize[1])
$hObj = _WinAPI_SelectObject($hMemDC, $hHBitmap)
_WinAPI_BitBlt($hMemDC, 0, 0, $aClientSize[0], $aClientSize[1], $hDC, 0, 0, $SRCCOPY)
_WinAPI_SelectObject($hMemDC, $hObj)
_WinAPI_DeleteDC($hMemDC)
_WinAPI_ReleaseDC($aWinArray[1][0], $hDC)
_GDIPlus_Startup()
$hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hHBitmap)
_WinAPI_DeleteObject($hHBitmap)
$i += 1
_GDIPlus_ImageSaveToFile($hBitmap, @ScriptDir & '\Screen-' & $i & '.bmp')
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_Shutdown()
EndFunc ;==>_Screen
Func _Exit()
Exit
EndFunc ;==>_Exit