Что нового

FastFind.au3 или ещё один способ поиска пикселя неактивного окна

_ToBe_

Осваивающий
Сообщения
142
Репутация
35
В общем долго штудировал форумы и этот и англ. и гугл :smile: Поскольку я новичёк во всем этом, то с _WinApiEx так и не разобрался. В итоге нашёл, что искал и решил поделиться сием чудом с нашими :whistle:

Итак, задача элементарная: Отслеживать наличие нейтрала в локале в неактивном окне и даже спрятанным за другими окнами или за пределами экрана.
Примечание: В свёрнутом окне - НЕ работает (или я не нашел как ;D )

Дополнение: Система Win 7 x64

Код:
#include <FastFind.au3>

AdlibRegister("_chk_loc")             ;Запускаем ф-цию проверки локала

Func _chk_loc()                         ;Описываем ф-цию проверки локала
$hwnd = WinGetHandle("EVE")      ;Выставляем Хэндл окна
	FFsetWnd($hwnd)              ;Указываем какое окно будем считывать
	      
	$Neutral = FFColorCount(0x8F0000, 0, True, 165, 40, 180, 360) ;Тут указываем переменной цвет, шэйд и скриншотим область сканирвоания (Более подробная инфа в Хелпе)

	If $Neutral  >= 1 Then         ;Если кол-во "нейтральных" пикселей больше, чем 1, то ... 
		Beep(1000, 100)         ;пикает  
	EndIf
EndFunc


Пробовал у себя с разными вариациями, задвигал окно, прикрывал окно, передвигал окно во время работы скрипта - работает! :laugh:

Оставляю остальное на ваше воображение и фантазию :smile: Буду рад коментариям и дополнениям в тему ;D

Не уверен, что можно указывать ссылки на чужие форумы, поэтому пока что не буду :scratch:
Ссылка на скачивание FastFind 2.0
Внутри файла есть Хелп, там оооочень много всякого - всё еще не успел посмотреть. Буду рад, если кто-то разберётся раньше и поделится вкусностями :smile:

Примечание: В папке есть файл FastFind64.dll - его надо ставить в папку с самим скриптом. Т.е. если у вас скрипт находится в папке D:\MyScripts, то этот файл должен быть там же.
 

scanfail

Знающий
Сообщения
244
Репутация
17
Тоже её находил, но мне нужен был именно со свернутым окном, поэтому пришлось отбросить её :'(
 
Автор
T

_ToBe_

Осваивающий
Сообщения
142
Репутация
35
А чем плохо передвинуть окно за пределы экрана И там делать с ним всё, что надо? :scratch:
 

Castellan

Новичок
Сообщения
32
Репутация
2
scanfail
удалось найти что-нить для свернутого окна? :smile:
 
Автор
T

_ToBe_

Осваивающий
Сообщения
142
Репутация
35
На мой взгляд единственное, что поможет в работе со свёрнутым окном - это работа с памятью процессов, но это совсем другая тема и иной уровень ^_^
 

lirikmel

Продвинутый
Сообщения
226
Репутация
84
те кто уже проверил как со скоростью работы этой библиотеки ?
PS
OffTopic:
спасибо уже не надо проверил ..... впечатляет
 

DoBBy

Новичок
Сообщения
4
Репутация
0
Тестил ли кто на WinXP x32?
У меня почему то не работает, не может загрузить FastFind.dll библиотека и сам скрипт находятся в одной папке, как указанно у ТС.
 
Автор
T

_ToBe_

Осваивающий
Сообщения
142
Репутация
35
Наверно ты просто не туда наверное кинул файл... в общем у меня вот как:
Все файлы я закинул туда, где стоит сам автоит в папку Include. (Например: C:\Program Files (x86)\AutoIt3\Include)

Файлы FastFind.dll / FastFind64.dll должны быть так же в той папке, где у тебя хранятся непосредственно скрипты (Например: D:\Макросы\Наработки)
 

EVEGamer

Знающий
Сообщения
27
Репутация
12
Всё работает на ура в Win7/XP 64/32, возможно автоит старый, детект версии неработает.
 

Whited

Знающий
Сообщения
79
Репутация
10
Отвожу окно за пределы экрана и получаю нули вместо цвета, что не так?

Код:
$hWin = WinGetHandle("Bot with browser")
WinMove($hWin,"",1300,200)
FFSetWnd($hWin)
FFSnapShot(10,10,$width,$height,0,$hWin)
$massiv[$i][$j] = FFGetPixel($X+$pix,$Y+$pix)
 

bugaj

Знающий
Сообщения
140
Репутация
11
Тоже её находил, но мне нужен был именно со свернутым окном, поэтому пришлось отбросить её

мои изыскания привели к выводу, что "изображения" свернутого окна не существует, а потому и получить его невозможно. Т.е. свернутое окно не нарисовано нигде впринципе. Для получения снимка окна еще можно юзать WinApi функцию PrintWindow - как то так называется. Фоткает окно независимо от того чем оно закрыто. Но на виртуальных машинах это почему то не работает (WM Player), там приходится делать принтскрин, т.е. в скрытом окне не получится. Кроме того, если нет возможности захватить контекст окна, то тоже не выйдет (например Frost выпиливает такую возможность работы с окном), но в еве с этим проблем нет.
 
Верх