Пишу элементарного фарм бота для игры, использую функцию
для снятия скриншота со значениями в игре, без сохранения хэширую. Каждый раз хэш разный. Это возможно исправить?
Пользуюсь данной функцией, так как оч важно, что бы в момент снятия скриншота, окно необязательно было активно.
Сохранять каждый раз картинку не варик, за 10 секунд будет делаться порядка 3-7 скриншотов.
Код:
_ScreenCapture_Capture
Код:
Func _Start_Capture_img($hwid,$imgX1,$imgY1,$imgX2,$imgY2)
_GDIPlus_Startup()
$hBitmap = Capture_Window($hwnd, $imgX1+2, $imgY1+26, $imgX2-$imgX1, $imgY2-$imgY1) ;скриншот части окна
$bHash = _md5($hBitmap)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_Shutdown()
$bHash=Hex($bHash)
Return $bHash
EndFunc
Func Capture_Window($hWnd, $l, $t, $w, $h)
Sleep(100)
Local $hDC_Capture = _WinAPI_GetWindowDC($hWnd)
Local $hMemDC = _WinAPI_CreateCompatibleDC($hDC_Capture)
Local $hHBitmap = _WinAPI_CreateCompatibleBitmap($hDC_Capture, _WinAPI_GetWindowWidth($hWnd), _WinAPI_GetWindowHeight($hWnd))
Local $hObj = _WinAPI_SelectObject($hMemDC, $hHBitmap)
DllCall("user32.dll", "int", "PrintWindow", "hwnd", $hWnd, "handle", $hMemDC, "int", 0)
Local $hSrcDC = _WinAPI_CreateCompatibleDC($hDC_Capture)
$hCompatible = _WinAPI_CreateCompatibleBitmap($hDC_Capture, $w, $h)
$hObj2 = _WinAPI_SelectObject($hSrcDC, $hCompatible)
_WinAPI_BitBlt($hSrcDC, 0, 0, $w, $h, $hMemDC, $l, $t, $SRCCOPY)
_WinAPI_DeleteDC($hMemDC)
_WinAPI_DeleteDC($hSrcDC)
_WinAPI_SelectObject($hMemDC, $hObj)
_WinAPI_SelectObject($hSrcDC, $hObj2)
_WinAPI_ReleaseDC($hWnd, $hDC_Capture)
Local $hBmp = _GDIPlus_BitmapCreateFromHBITMAP($hCompatible)
_WinAPI_DeleteObject($hHBitmap)
Return $hBmp
EndFunc
Сохранять каждый раз картинку не варик, за 10 секунд будет делаться порядка 3-7 скриншотов.