xishnik
Новичок
- Сообщения
- 51
- Репутация
- 0
Всем доброго дня. Хочу написать бота на игру в фоновом режиме, почти все получается, осталось научится
проверять цвет пикселя в определённой координате из картинки.
Работаю с этой функцией:
Если я указываю имя файла то она мне сохраняет картинку. Она её сохраняет даже в том случае если окно за пределами экрана, или поверх окна открыто другое приложение, что даёт мне возможность создать бота в фоновом режиме.
Если я не укажу имя файла, то функция мне просто вернет $hBmp.
Как в нем искать по координатам цвет пикселя?
Хотелось бы функцию, в которой можно было бы вписать $hBmp и координаты, а она мне цвет, может такая уже существует?
проверять цвет пикселя в определённой координате из картинки.
Работаю с этой функцией:
Код:
Func _ScreenCapture_CaptureBackgrWnd($sFileName, $hWnd, $iWidth = -1, $iHeight = -1)
Local $iOpt_WWD, $hActive, $aPos, $iH, $iW, $hDDC, $hCDC, $hBMP
If Not IsHWnd($hWnd) Then Return SetError(1, 0, 0)
If Not BitAND(WinGetState($hWnd), 2) Then
$iOpt_WWD = Opt("WinWaitDelay", 0)
$hActive = WinGetHandle("[ACTIVE]")
$aPos = WinGetPos($hWnd)
WinMove($hWnd, "", -1500, -1500)
WinSetState($hWnd, "", @SW_SHOW)
WinActivate($hActive)
WinWaitActive($hActive)
Opt("WinWaitDelay", $iOpt_WWD)
ElseIf BitAND(WinGetState($hWnd), 16) Then
$iOpt_WWD = Opt("WinWaitDelay", 0)
$hActive = WinGetHandle("[ACTIVE]")
WinSetState($hWnd, "", @SW_RESTORE)
WinActivate($hActive)
WinWaitActive($hActive)
Opt("WinWaitDelay", $iOpt_WWD)
EndIf
If $iWidth = -1 Then $iWidth = _WinAPI_GetWindowWidth($hWnd)
If $iHeight = -1 Then $iHeight = _WinAPI_GetWindowHeight($hWnd)
$hDDC = _WinAPI_GetDC($hWnd)
$hCDC = _WinAPI_CreateCompatibleDC($hDDC)
$hBMP = _WinAPI_CreateCompatibleBitmap($hDDC, $iWidth, $iHeight)
_WinAPI_SelectObject($hCDC, $hBMP)
DllCall("User32.dll", "int", "PrintWindow", "hwnd", $hWnd, "hwnd", $hCDC, "int", 0)
_WinAPI_BitBlt($hCDC, 0, 0, $iW, $iH, $hDDC, 0, 0, 0x00330008)
_WinAPI_ReleaseDC($hWnd, $hDDC)
_WinAPI_DeleteDC($hCDC)
If IsArray($aPos) Then
WinMove($hWnd, "", $aPos[0], $aPos[1])
WinSetState($hWnd, "", @SW_HIDE)
ElseIf IsHWnd($hActive) Then
WinSetState($hWnd, "", @SW_MINIMIZE)
EndIf
If $sFileName = "" Then Return $hBMP
_ScreenCapture_SaveImage($sFileName, $hBMP, True)
EndFunc
Если я указываю имя файла то она мне сохраняет картинку. Она её сохраняет даже в том случае если окно за пределами экрана, или поверх окна открыто другое приложение, что даёт мне возможность создать бота в фоновом режиме.
Если я не укажу имя файла, то функция мне просто вернет $hBmp.
Как в нем искать по координатам цвет пикселя?
Хотелось бы функцию, в которой можно было бы вписать $hBmp и координаты, а она мне цвет, может такая уже существует?