Что нового

Нужна помощь по функции наведения на цель с помощью библиотеки FastFind

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Дак напиши ответ :smile:
 
Автор
S

_serfer_78_

Новичок
Сообщения
16
Репутация
0
Belfigor сказал(а):
Дак напиши ответ :smile:

Не вопрос Бельфигор! )) Сделал не большой пример с описаниями , табуретками не швыряться , но адекватная критика все же приветствуется.

Код:
#Region    ************ Includes ************
#include <FastFind.au3>  ; подключаем необходимые программе библиотеки
#include <GUIConstantsEx.au3>
#EndRegion ************ Includes ************
;--------------------------------------------------------------------------------------
Opt("MouseCoordMode", 2)  ; Устанавливает способ отсчёта координат используемый в функциях мыши
Opt("PixelCoordMode", 2)  ;Устанавливает способ отсчёта координат используемый в Pixel-функциях.
Opt("SendKeyDownDelay", 100) ;Изменяет продолжительность нажатого состояния клавиши, перед тем как отпустить
Opt("MouseClickDownDelay", 100) ; Изменяет продолжительность нажатой кнопки мыши, прежде чем отпустить.

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Быстрый поиск", 670, 419, 192, 124)
$PicTest = GUICtrlCreatePic(@ScriptDir & "\test.bmp", 8, 8, 452, 404) ;Подгружаем картинку в гуи из папки со скриптом
$ButtonPoisk = GUICtrlCreateButton("Поиск цвета", 472, 104, 171, 25)
$LabelCoord = GUICtrlCreateLabel("Координаты", 472, 144, 194, 17)
$LabelTime = GUICtrlCreateLabel("Время поиска", 472, 208, 196, 17)
$Input_color = GUICtrlCreateInput("", 480, 64, 161, 21)
GUICtrlSetTip(-1, "Введите цвет в шестнадцатеричном 0xFF0000 или десятичном 16711680  формате ") ;Всплывающая подсказка
$LabelKol = GUICtrlCreateLabel("Количество найденных пикселей", 472, 176, 196, 17)
$ChecMous = GUICtrlCreateCheckbox("Показать курсором мыши", 480, 24, 161, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

HotKeySet("{ESC}", "End") ;Горячая клавиша -  остановить поиск
Global $hwnd = WinGetHandle("Быстрый поиск") ; окно в котором ищем 
Global $color
WinSetState($hwnd, "",@SW_RESTORE) ; развернуть если свернуто
FFsetWnd($hwnd) ;Указываем какое окно будем считывать
FFSnapShot(0, 0, 0, 0, 0, $hwnd) ; скрин 


Func FindSpot() ; функция которая ищет пиксель(и) указанного цвета
 $Timer = @MSEC	; засекаем время
	 WinActivate($hwnd) ; Активирует указанное окно (передаёт ему фокус). В нашем случае - наша программа
   $aCoords = FFNearestSpot(10 , 10, 254, 382, $color, 0 ,False,0,146,459,411) ;ищет  пиксели и заносит найденные в архив $aCoords
   If Not @error Then ; если нет ошибки то.......
		$Timer1 = @MSEC ; смотрим время по окончании поиска
GUICtrlSetData($LabelTime, $Timer1 - $Timer&"  ms") 	; вычисляем разницу - выводим  время затраченное на поиск 
GUICtrlSetData($LabelCoord, "X-"&$aCoords[0]&"   Y-"&$aCoords[1]) ; А так же координаты найденного
GUICtrlSetData($LabelKol, $aCoords[2] ) ; пишем  сколько нашли пикселей
If GUICtrlRead($ChecMous) == $GUI_CHECKED Then ; если чекбокс "Показать курсором мыши" отмечен
MouseMove($aCoords[0], $aCoords[1], 5) ; Ставим курсор мыши на найденный пиксель
	 EndIf
   Else        ; в противном случае
      GUICtrlSetData($LabelKol, "Ничего не нашли." ) ; пишем  что не нашли
   EndIf ; закончили 
EndFunc 

Func End() ; функция для остановки и выхода
    Exit
EndFunc

While 1 ; Цикл управления окном программы
	$nMsg = GUIGetMsg() ; Опрос GUI-окна на возникновение какого либо события.
	$color = GUICtrlRead($Input_color) ;Возвращает  текст из поля ввода цвета
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $ButtonPoisk ; Нажали клавишу поиска
		FindSpot()  ; Запустилась наша функция
	EndSwitch
WEnd


Так же прилагаю готовый код ссылка внизу. Распаковываем папку на стол откраваем в редакторе SciTE запускаем либо компилируем и запускаем.. Цвета для поиска в папке со скриптом, файл Цвета.txt , копируем любой , вставляем и жмем поиск)))

https: //cloud.mail.ru/public/BA5Z/1FRB5RpgK Уберите пробел после https , почему то ссылки не могу сюда вставлять...
 
Верх