Что нового

Как сделать аналог PixelSearch через WinAPI?

Phantom

Новичок
Сообщения
13
Репутация
0
Не совсем понимаю но очень хочется понять. Часть скрипта
Код:
Local $hWnd = WinGetHandle($Login)
Local $Size = WinGetClientSize($hWnd)
Local $hDC = _WinAPI_GetDC($hWnd)
Local $hMemDC = _WinAPI_CreateCompatibleDC($hDC)
Local $hBitmap = _WinAPI_CreateCompatibleBitmap($hDC, $Size[0], $Size[1])
Local $hSv = _WinAPI_SelectObject($hMemDC, $hBitmap)
_WinAPI_BitBlt($hMemDC, 0, 0, $Size[0], $Size[1], $hDC, 0, 0, $SRCCOPY)
_WinAPI_SelectObject($hMemDC, $hSv)
_WinAPI_DeleteDC($hMemDC)
_WinAPI_ReleaseDC($hWnd, $hDC)
_ScreenCapture_SaveImage (@MyDocumentsDir & "\GDIPlus_Image.bmp", $hBitmap)
_WinAPI_DeleteObject($hBitmap)
_WinAPI_DeleteObject($hMemDC)
с которой вроде что то понятно, и результатом которой является созданный bmp. Но не понятно как мне вместо создания bmp найти точку и кликнуть по ней аналогично PixelSearch. :stars:
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Re: Как работать с WinAPI?

Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"Как работать с WinAPI?" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

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








Пользуйтесь поиском.
 
Автор
P

Phantom

Новичок
Сообщения
13
Репутация
0
Если бы в найденых темах всё было понятно, сюда не полез бы, логично?
 

Prog

Продвинутый
Сообщения
537
Репутация
65
Если искать в цикле, то будет очень долго (намного дольше чем при использовании PixelSearch).
 

Prog

Продвинутый
Сообщения
537
Репутация
65
Phantom [?]
Надо реализовать поиск основного пикселя, проверить рядом контрольный
Вощзможно быстрее будет через эту библиотеку. http://autoit-script.ru/index.php?topic=19590.0

Phantom [?]
на WinAPI сам не могу
Извиняюсь за может глупый вопрос, но почему не можете?
Все мы когда-то учились и WinAPI функции не так сложны как кажется. Но как писал выше, если искать в цикле на AutoIt-е, то скорость поиска скорее всего будет ниже чем у функции PixelSearch.
 
Автор
P

Phantom

Новичок
Сообщения
13
Репутация
0
Ясно, спасибо.
Если я правильно понял тут
Код:
For $i = 0 To $i_Height - 1
        For $j = 0 To $i_Width - 1
            $i_Index += 1
            If BitAND(DllStructGetData($t_Bits, 1, $i_Index), 0x00FFFFFF) = $i_Color Then
                $a_Pixels[0][0] += 1
                $a_Pixels[$a_Pixels[0][0]][0] = $j + $i_X
                $a_Pixels[$a_Pixels[0][0]][1] = $i + $i_Y
                If $f_FirstOnly Then ExitLoop 2
            EndIf
        Next
Next
производится побитовое умножение созданного объекта на 0x00FFFFFF, если результат равен $i_Color координаты заносятся в массив. А почему нельзя просто сравнить цвета, если совпал то добавить в массив???
 
Верх