Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Mind War on February 27, 2021, 05:38:31 PM
-
А где полный архив скачать?
В последнем доступном к скачке - только .exe'шник и хелп, а без файлов настроек и прочего сопутствующего - кликер ловит глюки и не работает(тест - банально wndfindarr не подсвечивает, и не обрабатывает никак. Памагити
-
Так там только экзешник со справкой и новые. Кидаешь в версию 4.13.14 финальную с заменой и фсьоо.
Можешь даже имя дать другое и будут две версии в одной папке.
-
Так там только экзешник со справкой и новые. Кидаешь в версию 4.13.14 финальную с заменой и фсьоо.
Можешь даже имя дать другое и будут две версии в одной папке.
4.13.014x32 если имеется ввиду эта версия - wndfindarr не заработал, потому и пишу((
-
Запилил на коленке костыль, тоже в общем-то подходит, но мб можно что-то пошустрее работающее сделать?
Здесь по горизонтали 135 точек(экран 1920х1080, очевидная формула в 4й строке), по вертикали 120. охват - по окнам 95+%
for($i1,$i1<135) //начинаем с цикла ширины(по ходу скрипта будет проверка hwnd идти сначала сверху вниз, дойдя до нижней границы экрана идет сдвиг вправо и начинаем с верхней границы
$i2=0 //обнуляем итую 2
for($i2,$i2<120) //цикл высоты, итая постоянно обнуляется чтобы не ограничивать наполнение массива только первым рядом hwnd
$pix=hget($i2*15,$i1*7) //получаем hwnd в заданной точке
arrpush($arr,$pix) //вносим данные в массив
end_cyc
logwrite($i1) //лог отчет о завершении каждого вертикального ряда
end_cyc
logwrite(arrsize($arr)) //вывод размера массива
arrsort($arr) //сортировка массива - очешуенно важная штука, ускоряет фильтрацию повторяющихся значений многократно
$i=0
for($i,$i<arrsize($arr)) //цикл фильтрации и вывода
if($i=0)//если цикл совершает первый шаг - значение выводится без проверок
logwrite($arr[$i])
$f_old=$arr[$i] //переменная, содержащая предыдущий вывод
else //если цикл совершает НЕ первый шаг
if($arr[$i]=$f_old) //проверка на совпадение текущего значения с предыдущим
//если совпадает - происходит НИЧЕГО =)
else //если не совпадает - ничего страшного, так тоже бывает
logwrite($arr[$i]," - ",hgettext($arr[$i]))//выводим сам hwnd и имя окна, если доступно.
$f_old=$arr[$i] //тоже заносим инфо для последующей проверки
end_if
end_if
end_cyc
-
а шо тут не так ? чтото с кодом ?
-
а шо тут не так ? чтото с кодом ?
Код как код, только слишком объемный, медленный, и алгоритм хромает.
Массив надо выкинуть, вместе с сортировкой и циклом "фильтрации и вывода". Лишних операций, logwrite и переменных, в коде тоже быть не должно. Это в идеале конечно, в "боевом" варианте скрипта. Для "коленочного" варианта и так сойдет.
Перебор массива со сравнением его элементов - очень тяжелая вещь. Строковые функции работают намного быстрее. Например в STRPOS имеется свой собственный цикл для перебора и сравнения, который работает на более низком уровне и по определению более быстрый, чем конструкции FOR + IF.
Вариант со строкой почти в 2 раза быстрее:
$str = ""
FOR($i1 = 0, $i1 < 135) // начинаем с цикла ширины (по ходу скрипта будет проверка hwnd идти сначала сверху вниз, дойдя до нижней границы экрана идет сдвиг вправо и начинаем с верхней границы
FOR($i2 = 0, $i2 < 120) // цикл высоты, итая постоянно обнуляется чтобы не ограничивать наполнение массива только первым рядом hwnd
$pix = HGET($i2*15, $i1*7) // получаем hwnd в заданной точке
IF(STRPOS($str, $pix) = 0)
$str = STRCONCAT($pix, ";", $str)
LOGWRITE ($pix, " - ", HGETTEXT($pix)) // выводим сам hwnd и имя окна, если доступно.
END_IF
END_CYC
END_CYC
HALT
-
а шо тут не так ? чтото с кодом ?
Код как код, только слишком объемный, медленный, и алгоритм хромает.
Массив надо выкинуть, вместе с сортировкой и циклом "фильтрации и вывода". Лишних операций, logwrite и переменных, в коде тоже быть не должно. Это в идеале конечно, в "боевом" варианте скрипта. Для "коленочного" варианта и так сойдет.
Перебор массива со сравнением его элементов - очень тяжелая вещь. Строковые функции работают намного быстрее. Например в STRPOS имеется свой собственный цикл для перебора и сравнения, который работает на более низком уровне и по определению более быстрый, чем конструкции FOR + IF.
Вариант со строкой почти в 2 раза быстрее:
$str = ""
FOR($i1 = 0, $i1 < 135) // начинаем с цикла ширины (по ходу скрипта будет проверка hwnd идти сначала сверху вниз, дойдя до нижней границы экрана идет сдвиг вправо и начинаем с верхней границы
FOR($i2 = 0, $i2 < 120) // цикл высоты, итая постоянно обнуляется чтобы не ограничивать наполнение массива только первым рядом hwnd
$pix = HGET($i2*15, $i1*7) // получаем hwnd в заданной точке
IF(STRPOS($str, $pix) = 0)
$str = STRCONCAT($pix, ";", $str)
LOGWRITE ($pix, " - ", HGETTEXT($pix)) // выводим сам hwnd и имя окна, если доступно.
END_IF
END_CYC
END_CYC
HALT
Вооот, вот это я понимаю адекватная критика. Спасибо!
-
А где полный архив скачать?
В последнем доступном к скачке - только .exe'шник и хелп, а без файлов настроек и прочего сопутствующего - кликер ловит глюки и не работает(тест - банально wndfindarr не подсвечивает, и не обрабатывает никак. Памагити
Изначально был вопрос, почему не работает wndfindarr. В 4.13.14 как написал Vint такой функции то и вообще небыло. Она же в бете 4.14 только появилась. Вероятно Vint допустил описку. В версии 4.14.003b по крайней мере все пляшет без проблем.
Качай ее тут http://crapware.aidf.org/forum/index.php?topic=356.msg33512#msg33512 , там последняя сборка вместе с патчем.
v4.14.003 (02.08.19)
+ Интерпретатор:
+ Теперь все процедуры, возвращающие массив, очищают его перед заполнением
+ Добавлены поддержка внешнего препроцессора и директива #preprocessor
+ Добавлены инструкции:
+ CODE
+ FREADDATA
+ FWRITEDATA
+ FDELETE
+ FCOPY
+ FCREATE
+ FEXISTS
+ FSIZE
+ WNDFINDARR
+ CONTRAST
+ LOGWRITEC (PRINTC)
+ CALLARR
+ ARRCONCAT
(https://i.imgur.com/BiDsj3J.png)
-
Я всего лишь написал что экзешник от 14 версии кинуть к остальным файлам от 13-й. Ведь вопрос был в запуске 14 версии.
Что там человек себе придумал я без понятия, про wndfindarr я вообще ничего не отвечал, я думал это просто пример из 14 версии для проверки работы.