Что нового

[Ошибки] Функция _ScreenCapture_Capture разный хэш

firstoxe

Новичок
Сообщения
14
Репутация
0
Пишу элементарного фарм бота для игры, использую функцию
Код:
_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 скриншотов.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


С уважением, ваш Глобальный модератор.
 
Автор
F

firstoxe

Новичок
Сообщения
14
Репутация
0
Спасибо, вот только прав не хватает для использования тегов {autoit}. Даже цитату твою сюда вставить не могу.
 
Верх