Что нового

Selected Item Search Модуль

Belfigor

Модератор
Локальный модератор
Сообщения
3 551
Репутация
930
AutoIt: 3.3.1.1
Версия: 1.0
Категория: Распознавание элементов интерфейса EVE
Описание: Решил оформить и выложить кусочек одного из наших модулей дабы показать один из вариантов как можно использовать PixelSearchEx. Эта UDF находит и помещает в одномерный массив координаты левого верхнего угла окна Selected Item. Все необходимое для использование содержится в архиве.

Пример:
Код:
#include "PixelSearchEx.au3"
SISearchExample()
Func SISearchExample()
	Opt("PixelCoordMode", 0)
	Opt("MouseCoordMode", 0)
	WinActivate("EVE")
	WinWaitActive("EVE")
	Local $iCoord = SISearch()
	If Not @error Then
		MouseMove($iCoord[0], $iCoord[1], 10)
		MsgBox(0,"SISearch Message", "Тут находится левый верхний угол Selected Item"&@CR&"X: "&$iCoord[0]&@CR&"Y: "&$iCoord[1])
	Else
		MsgBox(0,"Error","Не удалось найти окно Selected Item"&@CR&"@error = "&@error)
	EndIf
EndFunc ;==> SISearchExample


Источник: Belfigor
 

hariton

Чайник
Сообщения
8
Репутация
0
Идея хорошая, но вот еще бы определять селектед итем с крупными значками или мелкими было б совсем чудно.
Я думаю как, если придумаю раньше - напишу
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3 551
Репутация
930
Если вдруг у меня возникнет ситуация в которой мне надо будет работать с большим селектед итемом я неприменно напишу и выложу это сюда. А так - совершенно бесполезная идея :smile:
 

hariton

Чайник
Сообщения
8
Репутация
0
Не знаю как у других, но у меня иногда бывает логинишься и окно селектед итемс вроде бы обычного размера а значки в нем крупные, и пока насильно мышкой не попытаешься его уменьшить до минимума, хотя визуально оно уже меньше не становится, значки превращаются в мелкие
 
Автор
B

Belfigor

Модератор
Локальный модератор
Сообщения
3 551
Репутация
930
Хммм о_О. Проверь настройки, у меня никогда ничего без моего на то желания не разъезжается :smile:. А если разъезжается то я строго знаю куда и на сколько оно могло уехать.
 

asa12

Чайник
Сообщения
66
Репутация
3
Код:
X_Y()

Func X_Y()
Local $i=0, $stroka=0
Do
	$xy=PixelSearch($stroka,0 , 200, 200, 0xE6E6E6, 2);нашли первую похожую точку
	If @error=0 Then
		PixelSearch($xy[0],$xy[1]+8, $xy[0], $xy[1]+8, 0xE6E6E6, 2);вторая точка+8 по у
		If @error=0 Then
			PixelSearch($xy[0]+4,$xy[1]+3, $xy[0]+4, $xy[1]+3, 0xE6E6E6, 2);3 точка
			If @error=0 Then
				PixelSearch($xy[0]+4,$xy[1]+4, $xy[0]+4, $xy[1]+4, 0xE6E6E6, 2);4 точка
				If @error=0 Then
					$i=1
					MouseMove($xy[0],$xy[1])
					TT("нашли "&TimerDiff($timer)/1000 & "сек")
				Else
					$stroka=$stroka+1;если любое условие не сработает уменьшаем зону поиска на 1 строку
				EndIf
			Else
				$stroka=$stroka+1;если любое условие не сработает уменьшаем зону поиска на 1 строку
			EndIf
		Else
			$stroka=$stroka+1	
		EndIf
	EndIf	
Until	$i=1 or $stroka=200
if $stroka=200 Then
	TT("не нашли")
EndIf
EndFunc


Функция должна искать треугольник главного меню по четырем точкам (условиям). Логика: ищем в области похожую точку, и проверяем на условия эту точку, не получалось ? уменьшаем зону поиска на 1 строку.
Работает по 2 условиям нормально - время поиска 0,9 сек. Но уже при 3 условиях думает долго - дольше 30 сек не ждал.
В чём проблема? Поставил счётчик строк - проходит 65 раз по циклу и застревает.
Поиск по двум условиям неплохо, но явно не достаточно.
 
Верх