Автокликер Clickermann :: Форум
Основной раздел => Ошибки => Topic started by: YoClickamann on September 30, 2016, 11:07:42 AM
-
Здравствуйте, есть такой вопрос.
У меня последняя версия кликера, Виндовс 8.0, отключил кликеру "Предотвращение выполнения данных (http://crapware.aidf.org/forum/index.php?topic=1248.0)" DEP (всё, как полагается).
Мне нужно снять скриншот экрана с всплывающей менюшкой, на которой размещён список открытых в системе окон, чтобы потом скрипт нашёл нужный мне пункт меню с программой и тыкнул в него для закрепления программы поверх всех окон. Но скриншот почему-то не снимается, пробовал даже давать кликеру привилегии админа, скриншоты с других областей экрана у меня делаются и распознаются успешно. Как я понимаю, эта меню представляет собой некий слой, который не виден на скрине, может быть, кто-то знает, как сделать этот слой видимым? Пробовал также привязку к этому меню и выполнение к нему WNDBUMP (). При этом сам фокус на меню, разумеется, происходит, и могу там перемещаться по пунктам меню из скрипта. Хотел ограничить зону поиска картинки пункта меню его явным местом нахождения, но поиск не находит картинку даже по всему экрану.
Или может кто подскажет другой быстрый способ, как зафиксировать окно определённой программы над всеми окнами, может даже напрямую из самого кликера или из другой утилитки, можно через команды (желательно именно так, если будет быстрее закрепить, чем через клики по if_picture_in). Спасибо.
Для справки: программка с этой менюшкой сидит в трее, и оттуда же открываю через скрипт эту меню, находит его нормально через if_picture_in, а вот дальше дело не идёт.
Если нужно, выложу код скрипта:
[spoiler=Поиск иконки программы в трее, вызов меню окна программы]/keypress (#WIN)
move(0, $_ymax)
wait(0.7)
getscreen
/IF_PICTURE_IN (0,0, $_xmax,$_ymax, "ontop.bmp")
IF_PICTURE_IN (1100,600, $_xmax,$_ymax, "ontop.bmp")
print("ontop.bmp found at X=", $_return1, ", Y=", $_return2)
move($_return1+5, $_return2+5)
rclick(-1,-1)
else
print("ontop.bmp not found")
END_IF
wait(1.5)
/keypress (#up)
/keypress (#up)
getscreen
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "redaktor.bmp")
/IF_PICTURE_IN (1100,600, $_xmax,$_ymax, "redaktor.bmp")
print("redaktor.bmp found at X=", $_return1, ", Y=", $_return2)
move($_return1+5, $_return2+5)
/lclick(-1,-1)
else
print("redaktor.bmp not found")
END_IF
halt
wait(5)
+
/IF_PICTURE_IN (0,0, $_xmax,$_ymax, "tray.bmp")
IF_PICTURE_IN (1100,600, $_xmax,$_ymax, "tray.bmp")
print("tray.bmp found at X=", $_return1, ", Y=", $_return2)
move($_return1+3, $_return2+0)
/lclick(-1,-1)
else
print("tray.bmp not found")
END_IF
halt
[/spoiler]
-
Вероятная причина ; координаты скриншота выходят за размеры монитора.
если находит его нормально через if_picture_in,
то и
GETSCREEN
screenshot("скрин")
должно сохранять скрин, может вы их не в том месте ищите?
Папка screens, рядом с делающим скрины скриптом.
-
Вероятная причина ; координаты скриншота выходят за размеры монитора.
Поправил сообщение и добавил код скрипта. Сам скрипт ищет пока что по всему экрану, если найдёт нужный мне пункт меню, то ограничу область поиска.
если находит его нормально через if_picture_in, то и
GETSCREEN
screenshot("скрин")
должно сохранять скрин, может вы их не в том месте ищите?
Папка screens, рядом с делающим скрины скриптом.
Спасибо за подсказку, сейчас попробую сделать скрин и посмотрю, что там кликер видит.
-
halt
это команда полной остановки скрипта, до поиска меню трея у вас код просто не доходит.
-
Или может кто подскажет другой быстрый способ, как зафиксировать окно определённой программы над всеми окнами, может даже напрямую из самого кликера или из другой утилитки, можно через команды. Спасибо.
а консольные утилиты Cmdow (https://ritchielawrence.github.io/cmdow/) или NirCmd (http://nircmd.nirsoft.net/win.html) не подойдут? (в вин8 я их не пробовал)
-
keypress (#WIN)
move(0, $_ymax)
WAITMS(700)
getscreen
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "ontop.bmp")
IF_PICTURE_IN (1100,600, $_xmax,$_ymax, "ontop.bmp")
print("ontop.bmp found at X=", $_return1, ", Y=", $_return2)
move($_return1+5, $_return2+5)
WAITMS(200)
rclick(-1,-1)
else
print("ontop.bmp not found")
END_IF
END_IF
WAITMS(1500)
keypress (#up)
keypress (#up)
getscreen
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "redaktor.bmp")
IF_PICTURE_IN (1100,600, $_xmax,$_ymax, "redaktor.bmp")
print("redaktor.bmp found at X=", $_return1, ", Y=", $_return2)
move($_return1+5, $_return2+5)
WAITMS(200)
lclick(-1,-1)
else
print("redaktor.bmp not found")
END_IF
END_IF
wait(5)
IF_PICTURE_IN (0,0, $_xmax,$_ymax, "tray.bmp")
IF_PICTURE_IN (1100,600, $_xmax,$_ymax, "tray.bmp")
print("tray.bmp found at X=", $_return1, ", Y=", $_return2)
move($_return1+3, $_return2)
WAITMS(200)
lclick(-1,-1)
else
print("tray.bmp not found")
END_IF
END_IF
halt
половина ваших бед от стороннего редактора
-
Потребуется утилита NirCmd v2.81
http://www.nirsoft.net/utils/nircmd.html (http://www.nirsoft.net/utils/nircmd.html)
В самом низу страницы ссылка на скачивание.
Почитай справку к утилите по команде win там очень много параметров поиска и действий с окнами включая также поиск дочерних окон.
Помести nircmd.exe в папку со скриптом.
Можно написать вызов в самом кликере.
EXECUTE("nircmd.exe", "win settopmost process Clickermann.exe 1") // окно процесса Clickermann.exe будет закреплено выше всех
Однако если нужно искать окно по заголовку то нужно указывать кавычки а кликер их не переваривает.
Тогда можно создать батник и вызывать его кликером
Текст батника "Top.bat"
Все окна в заголовках которых присутствует "Clickermann" будут закреплены выше всех
nircmd.exe win settopmost ititle "Clickermann" 1
Скрипт
EXECUTE("Top.bat")
-
SUB(поиск, $par1, $par2) // подпрограмма с параметрами
getscreen
// совершенно непонятно зачем вы ищете одну картинку дважды?
IF_PICTURE_IN (1100,600, $_xmax,$_ymax, $par1)
print($par1," found at X=", $_return1, ", Y=", $_return2)
move($_return1+3, $_return2)
WAITMS(200)
lclick(-1,-1)
else
print($par1," not found")
END_IF
WAITMS($par2)
END_SUB
keypress (#WIN)
move(0, $_ymax)
WAITMS(700)
поиск("ontop.bmp",1500) // вызов подпрограммы (обязательно ниже подпрограммы)
keypress (#up)
keypress (#up)
поиск("redaktor.bmp",5000)
поиск("tray.bmp",0)
halt
-
Потребуется утилита NirCmd v2.81
Почитай справку к утилите по команде win там очень много параметров поиска и действий с окнами включая также поиск дочерних окон.
Можно написать вызов в самом кликере.
EXECUTE("nircmd.exe", "win settopmost process Clickermann.exe 1") // окно процесса Clickermann.exe будет закреплено выше всех
Текст батника "Top.bat"
Все окна в заголовках которых присутствует "Clickermann" будут закреплены выше всех
nircmd.exe win settopmost ititle "Clickermann" 1
Ой, спасибочки. Слышал про много утилит в Нирсофте, но ни разу не пользовался. И спасибо за подсказку команд. А как быстрее будет: через батник или напрямую командой к нирсофт.ехе? Подозреваю, что последнее. И ещё вопрос: это окно Нирсофта будет выскакивать или оно будет невидимым, просто выполнит команду и завершится не всплыв? А если будет всплывать, то можно ли в параметре как-то указать ему, чтоб оно не всплывало? Хотя это не принципиально. Ещё раз спс за наводку.
-
И ещё вопрос: это окно Нирсофта будет выскакивать или оно будет невидимым, просто выполнит команду и завершится не всплыв? А если будет всплывать, то можно ли в параметре как-то указать ему, чтоб оно не всплывало? Хотя это не принципиально. Ещё раз спс за наводку.
На счет батника тут скорее решение проблем с символами которые нельзя указывать в строках типо кавычки.
Нет, утилита консольная а значит никаких окон не имеет.
-
дробные числа воспринимаются кликером с запятой
а правильнее будет записать так WAITMS(1500)
Буду знать, что надо с запятыми писать, спасибо. Но у меня пока работает не-флот и с точкой, тьфу-тьфу.
половина ваших бед от стороннего редактора.
Halt это команда полной остановки скрипта, до поиска меню трея у вас код просто не доходит.
В нём я ручками пишу, так что пока не вижу особых проблем. А хальт тоже сам поставил, потому что часть скрипта с распознаванием после хальта я уже оттестировал и она хорошо работает, поэтому и ограничил её от нерабочей, неотлаженной части хальтом, чтобы не выполнялась и чтоб не морочиться с комментированием.
а консольные утилиты Cmdow (https://ritchielawrence.github.io/cmdow/) или NirCmd (http://nircmd.nirsoft.net/win.html) не подойдут? (в вин8 я их не пробовал)
Да, я вот как-раз и искал консольную, что-то вроде этого и чтоб она могла выводить поверх других окон. Спасиб за ссылки.
-
На счет батника тут скорее решение проблем с символами которые нельзя указывать в строках типо кавычки.
Нет, утилита консольная а значит никаких окон не имеет.
У меня консольные программы ассоциируются с чёрными выскакивающими окошками времён ДОСа, в частности и КМД.ехе так же выглядит, поэтому казалось, что они должны выскакивать и ждать ввода команды типа "press any key to continue" или же "подтвердите, что вы желаете закрепить выбранное окно поверх других". Но это очень круто, что ничего всплывать лишнего не будет. Отсюда только опять небольшой вопрос, а как можно будет узнать, что нирсофт уже закрепил окно? Он вернёт какую-то команду в кликер? Спрашиваю просто так, для общего развития, так что если долго писать такое, то не морочьтесь, пойдёт и так, можно будет ожидание в пару сек поставить в скрипт, проще же.
-
И ещё один вопрос вдогонку: а вот в главном окне кликера указывается некий PiD. Его как-то можно использовать, указывать в скриптах через какую-то команду? Или он там в окне просто для красоты? Спасибо вам за быстрые ответы.
-
GETSCREEN
screenshot("скрин")
должно сохранять скрин,
Папка screens, рядом с делающим скрины скриптом.
Самое интересное, что если вернутся к теме типа нескринящейся менюшки, то воспользовался командой screenshot(), посмотрел вышедший скрин и, оказывается, на нём видно меню. Сам же шаблончик картинки для поиска я вырезал очень аккуратно, с большим увеличением в редакторе, в него ничего не попало кроме нужного. Да и разных таких шаблонов я переделал не мало, и они всегда работали, иногда правда нужно повозиться с окантовкой и фоном. А тут менюшку скринит, а пункта меню почему-то не видит. Может, какая прозрачность имеет место быть. Ладно, сделаю по-нормальному, через консольку, так по ходу и быстрее будет.
-
дробные числа воспринимаются кликером с запятой
wait(1.5)
wait(1,5)
:o почему это?
-
так автор программы решил, в редакторе числа подсвечиваются синим, строки малиновым, если с точкой то получается это строка.
-
Отсюда только опять небольшой вопрос, а как можно будет узнать, что нирсофт уже закрепил окно? Он вернёт какую-то команду в кликер? Спрашиваю просто так, для общего развития, так что если долго писать такое, то не морочьтесь, пойдёт и так, можно будет ожидание в пару сек поставить в скрипт, проще же.
Нет ничего не возвращает и никак не сообщает, остается только надеяться и верить ;D
Ну вообще для начала протесть это в батнике, отработка занимает миллисекунды так что 500 мс ожидания будет выше крыши.
И ещё один вопрос вдогонку: а вот в главном окне кликера указывается некий PiD. Его как-то можно использовать, указывать в скриптах через какую-то команду? Или он там в окне просто для красоты? Спасибо за быстрые ответы.
Эта инфа будет полезна только для двух редко используемых функций READMEM и WRITEMEM которым как раз этот pid и нужен. Правда нет функции для автоматического получения этотго pid поэтому все вручную.
-
так автор программы решил, в редакторе числа подсвечиваются синим, строки малиновым, если с точкой то получается это строка.
Это тэг на сайте устаревший. Он и новые функции не подсвечивает. В редакторе всё синим.
+Опыт
$time = $_ms
wait(1,5)
LOGWRITE("С запятой ", $_ms - $time)
$time = $_ms
wait(1.5)
LOGWRITE("С точкой ", $_ms - $time)
HALT
Ответ:
12:53:26 С запятой 1000
12:53:28 С точкой 1500
-
получается с точностью до наоборот?
в задержке wait(1,5) -12:53:26 С запятой 1000
куда только мир катится, как трудно стало программировать. :'(
Не понял, что наоборот? Числа все с точками. Результат правильный 1500.
Запятая - неправильный.
Подсветка на сайте устаревшая, когда WAIT не принимал дробные.
-
так автор программы решил, в редакторе числа подсвечиваются синим, строки малиновым, если с точкой то получается это строка.
Гг, меткое замечание. Но пожалуй, это камень в огород давно обновлявшегося синтаксиса, прописанного в движке сайта. А так синтаксис у самого кликера гибкий, позволяет много косячить, писать разными кейсами, с пробелами в функциях или без, и это очень хорошо, по-моему.
Ну вообще для начала протесть это в батнике, отработка занимает миллисекунды так что 500 мс ожидания будет выше крыши.
Да, команда-то не архисложная, по идее должно очень быстро сработать, просто у меня есть сомнения в моём древнем, паругодовалом UMPC и подозрение, что он дольше будет к файлу на винчестере обращаться, чем исполнять сам батник. ;D
Эта инфа будет полезна только для двух редко используемых функций READMEM и WRITEMEM которым как раз этот pid и нужен. Правда нет функции для автоматического получения этого pid поэтому все вручную.
А эти функции READMEM и WRITEMEM кто-то на форуме тут использует в своих скриптах? То есть, если я правильно понимаю, то кликер позволяет менять данные в оперативке, в хелпе информации не густо. А как это в самом простейшем случае можно использовать и для чего? Можно какой-нибудь пример для базовых программ вроде блокнота виндового, как в нём что-нибудь изменить? Или может хорошая тема уже есть здесь на форуме об этом?
-
Опыт
$time = $_ms
wait(1,5)
LOGWRITE("С запятой ", $_ms - $time)
$time = $_ms
wait(1.5)
LOGWRITE("С точкой ", $_ms - $time)
HALT
/aaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbb
/aaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbb
/aaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbb
/aaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbb
/aaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbb
/aaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbb
/aaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbb
/aaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbb
/aaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbb
/aaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbb
/aaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbb
/aaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbb
/aaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbb
/aaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbb
/aaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbb
/aaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbb
/aaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbb
/aaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbb
/aaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbbaaaaaaaaaabbbbbbbbbb
Ответ:
12:53:26 С запятой 1000
12:53:28 С точкой 1500
Ух, интересный пример, то есть кликер возвращает разные ответы в зависимости от того, как написана переменная - с точком или с запятой? Не понятно только, откуда там вообще берётся 1000.
А, дошло. Если писать с запятой, то интерпретатор просто отбрасывает дробную часть, как ни странно. То есть с запятой лучше не писать, иначе потеряешь по пути точность переменных, особенно если она важна для дальнейших расчётов.
-
А, дошло. Если писать с запятой, то интерпретатор просто отбрасывает дробную часть, как ни странно
Что же тут странного. В кликере у дробных чисел разделитель точка! Без всяких вариантов.
А запятая разделяет параметры. Ваит принимает один параметр 1 и не учитывает оставшийся мусор.
-
Что же тут странного. В кликере у дробных чисел разделитель точка! Без всяких вариантов.
А запятая разделяет параметры. Ваит принимает один параметр 1 и не учитывает оставшийся мусор.
Да, но по логике у wait() один параметр. А так, если по делу, то я спокоен, потому что мне повезло и я использовал правильный вариант, печатая цифры в английской раскладке на цифровом, правом блоке клавиатуры. И там под цифрами точка, а не запятая, как в русской раскладке. Вопрос выбор языка раскладки :)
-
Отсюда только опять небольшой вопрос, а как можно будет узнать, что нирсофт уже закрепил окно? Он вернёт какую-то команду в кликер?
да! но не именно в скрипт
nircmd возвращает стандартый код возврата. его анализируют например в пакетных файлах конструкцией
if [not] errorlevel число команда [else выражение]
в кликермане нет (пока?) обработки кодов возврата, поэтому можно
1) запускать nircmd не напрямую а через bat-файл, в нём анализировать код возврата, делать echo ok >exitcode.log или echo error >exitcode.log в зависимости от кода, ждать в кликере в цикле появления этого файла на диске, и читать ответ
2) запускать nircmd.exe с опцией showerror, форсируя вывод ошибок на stdout с перенаправлением (>) в текстовый файл, и опять таки ждать файла кликером, читать и анализировать.
P.S. что пишет nircmd с флагом showerror в консоль при закреплении окна – не знаю
-
да! но не именно в скрипт
nircmd возвращает стандартый код возврата. его анализируют например в пакетных файлах
1) в кликермане нет (пока?) обработки кодов возврата, поэтому можно запускать nircmd не напрямую а через bat-файл, ждать в кликере в цикле появления этого файла на диске, и читать ответ
2) запускать nircmd.exe с опцией showerror, форсируя вывод ошибок на stdout с перенаправлением (>) в текстовый файл, и опять таки ждать файла кликером, читать и анализировать.
Сама идея проверять код возврата и совет хорошие, но вот реализация как для меня сомнительная. Постоянно читать переменную через файл это неплохая нагрузка на диск, и по-моему к таком лучше не прибегать, если конечно код ответа не критичен для следующих вычислений и операций, а вот у меня мозолит мысли вариант, о котором я спросил чуть выше:
А эти функции READMEM и WRITEMEM кто-то на форуме тут использует в своих скриптах? То есть, если я правильно понимаю, то кликер позволяет менять данные в оперативке, в хелпе информации не густо. А как это в самом простейшем случае можно использовать и для чего? Можно какой-нибудь пример для базовых программ вроде блокнота виндового, как в нём что-нибудь изменить? Или может хорошая тема уже есть здесь на форуме об этом?
И также есть предположение, что через оперативную память как раз и делаются такие операции проверки, только вот надо разобраться с этими командами READMEM, чтоб не заставлять маслать диск. Предположительно, об этих кодах возврата вы и пишете:
в кликермане нет (пока?) обработки кодов возврата, поэтому можно запускать nircmd через bat-файл
А если накрайняк то да, ваш метод хорош, и должен 100-процентно работать и перестраховывать в серьёзных скриптах. Вот может у Нирсофта есть вывод не в файл, а в экранный лог? А если по-хорошему, то нужна функция манипуляции с z-index'ом окон (для их закрепления/открепления наверху) и в Кликермане. Функцию WNDSTATE() не предлагать! :)
А вот ещё идея пришла: может можно через отправку SENDMESSAGE / POSTMESSAGE окошко поверху закрепить? Или такая константа WM_ не поддерживается?