Func square_arr_pixel($color)
Local $i,$iReDim,$iCoord
$i = 1
Dim $square_arr_pixel[$i][5]
_ArrayTrim( $square_arr_pixel, 1, 1,1)
$coord = PixelSearch( $x,$y,$x2,$y2, '0x'&$color )
If Not @error Then
$coordY = $coord[1]
$BottomPixel =_PixelGetColorEx ( $coord[0] , $coord[1],$hWnd2 )
$ww = TimerInit()
While $BottomPixel == $color ;And ($end <> 1)
$BottomPixel =_PixelGetColorEx ( $coord[0] , $coordY, $hWnd2 )
If $BottomPixel == $color Then
$coordY += 21
Else
$BottomPixelNew =_PixelGetColorEx ( $coord[0] , $coordY, $hWnd2 )
While $BottomPixelNew <> $color
$BottomPixelNew =_PixelGetColorEx ( $coord[0] , $coordY,$hWnd2 )
If $BottomPixelNew == $color Then
$Find = $coordY-$coord[1]+2
;ConsoleWrite($Find)
ReDim $square_arr_pixel[$Find][5]
;$end = 1
EndIF
$coordY -= 1
WEnd
EndIf
WEnd
$www = StringTrimRight ( TimerDiff($ww),10)
_GUICtrlStatusBar_SetText($StatusBar1, "Картинка обработана за: "&$www , 0)
EndIf
Return $square_arr_pixel
EndFunc
Func _PixelGetColorEx ($x, $y, $hWnd)
Local $hDDC, $hCDC, $hBMP
$Wkoord = WinGetPos( $hWnd ) ; чтоб координаты стали относительные
$WClient = WinGetClientSize( $hWnd ) ; клиентская часть окна
$iWidth = _WinAPI_GetWindowWidth($hWnd)
$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_SaveHBITMAPToFile( @ScriptDir & '\MyImage.bmp', $hBMP)
$iBorder = ($Wkoord[2] - $WClient[0]) / 2 ;получаем ширину бордюра
$iCaption = ($Wkoord[3] - $WClient[1]) - $iBorder ;получаем высоту заголовка окна
$iX = $x + $iBorder ; пересчет на относительные координаты
$iY = $y + $iCaption ; с учетом бордюра(4?) и титульной строки (23?)
$c = _WinAPI_GetPixel($hCDC, $iX, $iY)
$R = _WinAPI_GetRValue($c)
$G = _WinAPI_GetGValue($c)
$B = _WinAPI_GetBValue($c)
_WinAPI_ReleaseDC($hWnd, $hDDC)
_WinAPI_DeleteDC($hCDC)
_WinAPI_DeleteObject($hBMP) ; очищаем битовый массив
Return Hex(_WinAPI_RGB($R, $G, $B), 6)
EndFunc ;==>_PixelGetColorEx