Что нового

Поиск координат в неактивном окне с относительными координатами

G

GenoTIP

Гость
как увидеть на экране координату, которую принимает вот эта функция при любых Х и У, главное чтобы координаты искала ВНУТРИ окна, в заданно области. оч нужно..спасибо.

Код:
#include <WinAPIEx.au3>
Opt("MouseCoordMode", 2)
Func _PixelGetColorEx ($iX, $iY, $hWnd)
    Local $hDDC, $hCDC, $hBMP
    ;$aPos = WinGetPos("[TITLE:ProFinance]")
    $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)
    ;$xx = $aPos[0]+$iX+3
    ;$yy = $aPos[1]+$iY+25
    $c = _WinAPI_GetPixel($hCDC, $iX, $iY)
    ;$sColor = PixelGetColor ($iX, $iY)
    $R = _WinAPI_GetRValue($c)
    $G = _WinAPI_GetGValue($c)
    $B = _WinAPI_GetBValue($c)
    ;MsgBox(0,$c,Hex(_WinAPI_RGB($R, $G, $B), 6))
    ;MouseClick("left", $iX, $iY, 1)
    ;MsgBox(0,'',Hex($sColor),6)
    _WinAPI_ReleaseDC($hWnd, $hDDC)
    _WinAPI_DeleteDC($hCDC)
    _WinAPI_DeleteObject($hBMP) ; очищаем битовый массив
    Return Hex(_WinAPI_RGB($R, $G, $B), 6)
EndFunc   ;==>_PixelGetColorEx


Нашел проблему, из-за которой сохранялся неправильный битмап, теперь проблема в том, что картинка подгружается динамично в программу как Dummy и на битмапе её не видно, как заносить динамично картинку в обычный
Код:
GUICtrlCreatePic
?

я это делаю так :
Код:
$hGUI = GUICreate("ProFinance by GenoTIP",660, 373) ; ,-1, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_MAXIMIZEBOX, $WS_SIZEBOX)
;$Pic1 = GUICtrlCreatePic(@ScriptDir & "\prochart_mini.gif", 0, 0, 660, 324)
$Dummy = GUICtrlCreateDummy()
$PxIn = GUICtrlCreateInput("Размер", 2, 328, 49, 21)
$Button1 = GUICtrlCreateButton("OK", 52, 328, 27, 21)
$StatusBar1 = _GUICtrlStatusBar_Create($hGUI)
GUISetState()

$hWnd2  = WinGetHandle("ProFinance by GenoTIP")
$hTimer = TimerInit()
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Dummy
            $FirstSquare = square_arr_pixel($red)
            ;ConsoleWrite(UBound($FirstSquare ,1) & "|")

            $FirstSquareGr = square_arr_pixel($green)
            ;ConsoleWrite(UBound($FirstSquareGr ,1) & "|")

            DisplayImage() ;ФУНКЦИЯ ПОДГРУЗКИ КАРТИНКИ С ПОМОЩЬЮ GDIP
        Case $button1
            $MaxPx = GUICtrlRead($PxIn)
    EndSwitch

    If TimerDiff($hTimer) > 200 Then
        ;FileDelete(@ScriptDir & "\prochart.gif")
        GUICtrlSendToDummy($Dummy)
        $hDownload = InetGet("адрес",  @ScriptDir & "\картинка.gif",1,1)
        Do
            Sleep(250)
        Until InetGetInfo($hDownload, 2)    ; Проверка завершения загрузки
        InetClose($hDownload)   ; Закрыть дескриптор, чтобы освободить ресурсы.

        $hTimer = TimerInit()
    EndIf
WEnd


тема решена, вот так добавлять картинку в цикле, сначала добавить
Код:
$Pic1 = GUICtrlCreatePic('', 0, 0, 660, 324)
GUICtrlSetImage ($Pic1 , @ScriptDir & "\prochart_mini.gif")

а потом
зациклить
Код:
GUICtrlSetImage ($Pic1 , @ScriptDir & "\prochart_mini.gif")
 
Верх