Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: register on June 26, 2018, 02:05:55 AM
-
Основано на http://crapware.aidf.org/forum/index.php?topic=1381.msg9685#msg9685
Воспроизводим:
создаем bat файл содержащий:
start Clickermann.exe "test.cms"
Или создаем ярлык для Clickermann.exe, в конце пути дописываем "test.cms"
создаем config.ini содержащий:
[asd]
qwe=N832972257
создаем test.cms (в папке с Clickermann.exe) содержащий:
#autorun
#name "test"
WAIT(1)
EXECUTE("config.ini")
WAIT(1)
$zxcv = INIREAD("config.ini", "qwe", "asd")
$dialog = DIALOGBOX($zxcv, 1, 3)
HALT
Результат:
Файл "config.ini" успешно открывается.
Переменная $zxcv из "config.ini" не считывается (диалоговое окно выводит пустой текст)
Если указать полный путь ("c:/test/config.ini") - проблема остается. То есть, Clickermann не может получить доступ к файлу "config.ini".
Как быть?
-
По дефолту с твоим скриптом всё работает.
P.S. попробовал сохранить в utf-8 с BOM - ошибка как у тебя. ini нужно сохранять или в 1251 или utf-8 без BOM
пока не перезапишешь :(
-
Нет, не работает. Причем не работает и в 4.12 тоже.
Если запустить кликер через ассоциированный скрипт (двойной клик), то все работает.
Похоже где то ошибка в INIREAD
Интересно что при запуске через строку start Clickermann.exe test.cms в заголовке редактора не указывается путь до рабочего каталога, а при запуске через скрипт все показывается.
Кажется разобрался.
Нужно в параметре запуска указывать полный путь до скрипта!
Добавил запись в лог
#autorun
#logfile "Log.txt"
#name "test"
LOGSHOW (1, 100,100)
LOGWRITE ("Версия кликера: ",$_ver_self)
LOGWRITE ("Версия ситемы: ",$_ver_sys)
LOGWRITE ("Разрядность: ",$_arch_sys)
LOGWRITE ("Рабочая папка: ",$_pdir)
LOGWRITE ("Строка запуска: ",$_param_str)
LOGWRITE (" ")
$zxcv = INIREAD("config.ini", "qwe", "asd")
$dialog = DIALOGBOX($zxcv, 1, 3)
HALT
Лог:
Запуск через скрипт. Работает.
11:50:57 Версия кликера: 4.13.014
11:50:57 Версия ситемы:
11:50:57 Разрядность:
11:50:57 Рабочая папка: C:\Portable\Clickermann\projects\4.12\46\
11:50:57 Строка запуска: C:\Portable\Clickermann\Clickermann.exe;C:\Portable\Clickermann\projects\4.12\46\test.cms;
Запуск через батник (start c:\Portable\Clickermann\Clickermann.exe test.cms) Не работает.
11:51:06 Версия кликера: 4.13.014
11:51:06 Версия ситемы:
11:51:06 Разрядность:
11:51:06 Рабочая папка:
11:51:06 Строка запуска: c:\Portable\Clickermann\Clickermann.exe;test.cms;
Запуск через батник (start "c:\Portable\Clickermann\Clickermann.exe" "c:\Portable\Clickermann\projects\4.12\46\test.cms") Работает.
11:53:15 Версия кликера: 4.13.014
11:53:15 Версия ситемы:
11:53:15 Разрядность:
11:53:15 Рабочая папка: c:\Portable\Clickermann\projects\4.12\46\
11:53:15 Строка запуска: C:\Portable\Clickermann\Clickermann.exe;c:\Portable\Clickermann\projects\4.12\46\test.cms;
А еще оказалось что $_ver_sys и $_arch_sys ничего не возвращают, по крайней мере в XP.
LOGWRITE ("Версия ситемы: ",$_ver_sys)
LOGWRITE ("Разрядность: ",$_arch_sys)
HALT
-
Естественно, что путь к скрипту должен быть полный, а как иначе. Никакой ошибки нет, мы ведь не меняли рабочую папку. При запуске из командной строки рабочая папка другая.
Думаю если командой сменить рабочую папку, то и без полного пути заработает, только какой в этом смысл, всё равно прописывать не важно где.
А еще оказалось что $_ver_sys и $_arch_sys ничего не возвращают, по крайней мере в XP.
LOGWRITE ("Версия ситемы: ",$_ver_sys)
LOGWRITE ("Разрядность: ",$_arch_sys)
HALT
Работает в XP SP3. Я их сразу проверял.
12:13:13 Версия ситемы: 5.1.2600
12:13:13 Разрядность: 32
-
Естественно, что путь к скрипту должен быть полный, а как иначе. Никакой ошибки нет, мы ведь не меняли рабочую папку. При запуске из командной строки рабочая папка другая.
У автора темы пример
start Clickermann.exe "test.cms"
К тому же другие функции, например TFREAD при этом работают правильно.
Если ты о том что кликер в одной папке а скрипт в другой, сложил все в корневую папку кликера и запустил от туда, результат тот же.
Если указать полный путь ("c:/test/config.ini") - проблема остается. То есть, Clickermann не может получить доступ к файлу "config.ini".
Пробовал вписывать полный путь, тогда работает верно.
-
Понял, что надо указывать полный путь, но этот вариант не имеет смысла если я хочу чтобы мой скрипт был портабельным.
Вспомнил про переменную, которая возвращает путь к рабочей папке. Она тоже не хочет работать. (при том же запуске через start Clickermann.exe "test.cms")
Не знаю зачем, попробовал записать заранее путь к папке в файле, и потом присваивать переменной.
//#autorun
#name "test"
$path = STRCONCAT(TFREAD("input.txt", 1), "config.ini") //input.txt содержит строку: C:\QT Utils\Clickermann\
WAIT(1)
$zxcv = INIREAD($path, "qwe", "asd")
$dialog = DIALOGBOX("тек. ра. папка:"+$_pdir, 1, 3)
$dialog = DIALOGBOX("пауть из файла:"+$path, 1, 3)
$dialog = DIALOGBOX("переменная из конфиг.ини"+$zxcv, 1, 3)
HALT
И тут самое интересное.
При запуске через батник:
раб. папка: ""
путь из файла: "C:\QT Utils\Clickermannconfig.ini"
переменная из ини: "N8329...."
При запуске скрипта двойным кликом:
раб. папка: "C:\QT Utils\Clickermann\"
путь из файла: "C:\QT Utils\Clickermann\config.ini"
переменная из ини: "" (!)
Не улавливаю логики, как это работает, либо чтото делаю не то. Хотя повторю, что этот пример не решает проблемы, т.к. хоть он и считывает переменную, но при наличии заранее записанного пути к папке.
PS: у меня был ini сохранен в ANSI, всегда до этого. Сейчас попробовал в UTF8 - при запуске через батник переменную из ини уже не возвращает. В остальном всё тоже.
PSS: bat:
Clickermann.exe "%cd%\TEST.CMS"
на первый взгляд вроде решает все эти проблемы.