Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: GTmaster on July 06, 2019, 08:11:40 AM
-
Добрый день, у меня есть такой вопрос возможно ли хранить несколько значений в буфере памяти например есть строка в блокноте Пример (Первое значение : Второе значение : Третье значение : Четвертое значение : Пятое значение) Вот мне бы и хотелось все пять значение разом сохранить в буфер, а потом подставлять их по мере необходимости, на данном этапе макроса мне приходится выделять каждое, предварительно заходя в блокнот но в скором времени мне понадобится выхватывать значения ранее выбранные и я понимаю что это будет очень много кода
Заранее благодарен за помощь, всем добра =)
Наилучший вариант например сохранить всю строку в буфер и выхватывать значения через разделитель ":"
-
Никакие открытые блокноты, выделение и копирование не нужны.
Кликер работает с TXT файлами напрямую. Значения можно записать в переменные или массив и затем отправлять их в буфер когда потребуется.
Пример
$str = TFREAD("input.txt", 1) // считываем первую строку из файла input.txt в переменную $str
STRSEPARATE($str, ":", $arr) // Разбираем строку в массив по разделителю :
FOR($a=0,$a<ARRSIZE($arr))
LOGWRITE ($arr[$a]) // в цикле выводим значение каждой ячейки массива в лог
END_CYC
LOGSHOW (1) // показываем лог
HALT // Стоп
Теперь как это использовать.
Данный скрипт считывает твои значения из файла input.txt за тем открывает блокнот и вставляет их по порядку копируя каждое через буфер обмена.
$str = TFREAD("input.txt", 1)
STRSEPARATE($str, ":", $arr)
EXECUTE("Notepad.exe") // открываем блокнот
WAITMS(500)
FOR($a=0,$a<ARRSIZE($arr))
TOCLIP($arr[$a]) // каждый проход цикла в буфер будет отправляться сначала первое значение затем второе и тд.
WAITMS(50)
KEYDOWN (#CTRL) // вставляем
WAITMS (50)
KEYPRESS (#V)
KEYUP (#CTRL)
WAITMS(50)
KEYPRESS(#ENTER) // переходим на новую строку
WAITMS(50)
END_CYC
HALT // Стоп
В архиве пример с текстовым файлом.
-
Спасибо, полезная информация, только вот боюсь я не совсем правильно указал что нужно мне (Это моя вина), у меня массивный текстовый файл который я использую за основу макроса, суть заключается в том что мне было бы удобнее скопировать всю строку единожды именно ту что выделена в текущий момент в самом блокноте и разделить ее как раз по метке ":", потому что макрос он сам по себе зациклен и стоит на постоянный прогон этих строк, работает он 24 на 7. То есть последняя строка в коде опускает указатель в блокноте на одну строку и повторяет макрос с начала, если произойдет остановка макроса то я не смогу определить где он остановился, а если смогу то мне ручками придется менять номер строки что не есть хорошо, в довесок другие пользователи добавляют новые строки в блокнот.
Много написал по сути мне просто надо так чтобы я сам выделил строку, а после макрос из буфера разделил ее и на текущий повтор работал только с ней
-
STRSEPARATE(FROMCLIP(), ":", $arr)
-
...если произойдет остановка макроса то я не смогу определить где он остановился, а если смогу то мне ручками придется менять номер строки что не есть хорошо
Это не проблема. Можно сохранять в файл номер текущей строки.
IF(TFCOUNT("conf.ini") > 0) // определяем наличие файла конфигурации
$count = INT(INIREAD("conf.ini", "num")) // если есть присваиваем счетчику значение на котором остановились в прошлый раз
ELSE
$count = 1 // если его нет присваиваем счетчику значение 1
END_IF
WHILE(1) // бесконечный цикл
FOR($i=$count,$i<=TFCOUNT("input.txt")) // цикл строк из файла input.txt
INIWRITE("conf.ini", "num", $i) // записываем в файл конфигурации текущий номер строки
$str = TFREAD("input.txt", $i)
STRSEPARATE($str, ":", $arr)
FOR($a=0,$a<ARRSIZE($arr)) // цикл обработки значений строки
TOCLIP($arr[$a]) // каждый проход цикла в буфер будет отправляться сначала первое значение затем второе и тд.
WAITMS(50)
KEYDOWN (#CTRL) // вставляем
WAITMS (50)
KEYPRESS (#V)
KEYUP (#CTRL)
WAITMS(50)
KEYPRESS(#ENTER) // переходим на новую строку
WAITMS(50)
END_CYC
UNDEFINE($arr) // удаляем массив
END_CYC
END_CYC
-
Эх опять коряво объяснил =)
По порядку не интересно цель в том чтобы облегчить сам процесс и не использовать лишние операции, в ходе работы скрипта будет необходимо вернутся либо к первому значению в строке либо ко второму, сейчас это у меня выполнено так : Открывается блокнот прожимается Home и выбирается нужное значение в зависимости от ситуации. Меня устроит одна строка но с определением 5 значений и в нужный момент макрос смог бы взять с буфера и вставить то что ему нужно. Ini конечно хорошо но на данный момент и так уже скрипт использует 7 программ я уже молчу про количество папок необходимых для работы, добавить сюда еще и ini будет лишним =)
-
Эх опять коряво объяснил =)
По порядку не интересно цель в том чтобы облегчить сам процесс и не использовать лишние операции, в ходе работы скрипта будет необходимо вернутся либо к первому значению в строке либо ко второму, сейчас это у меня выполнено так : Открывается блокнот прожимается Home и выбирается нужное значение в зависимости от ситуации. Меня устроит одна строка но с определением 5 значений и в нужный момент макрос смог бы взять с буфера и вставить то что ему нужно. Ini конечно хорошо но на данный момент и так уже скрипт использует 7 программ я уже молчу про количество папок необходимых для работы, добавить сюда еще и ini будет лишним =)
Тогда тебе хватит этого. Значения в строке должны быть разделены символом :
UNDEFINE($arr)
STRSEPARATE(FROMCLIP(), ":", $arr)
//$arr[0] - первое значение
//$arr[1] - второе значение
//$arr[2] - третье значение
//$arr[3] - четвертое значение
//$arr[4] - пятое значение
// например
TOCLIP($arr[2]) // отправляем в буфер третье значение
WAITMS(50)
KEYDOWN (#CTRL) // вставляем
WAITMS (50)
KEYPRESS (#V)
KEYUP (#CTRL)
WAITMS (50)
-
ВО это уже похоже на то что я хочу, я так полагаю мне просто надо выделить все в буфер потом запустить этот скрипт и у меня будет деление на 5 частей, если да то БОЛЬШОЕ СПАСИБО тебе =)