Добавлено: Ср сен 21, 2011 09:48
В смысле перезапуск??? Продумывай свой скрипт, чтобы работал, как надо.
В INI нет понятия строки. Есть понятия секции и ключа в секции. Порядок секций и строк в рамках секции значения не имеют, имеет значение лишь то, в какой секции параметр находится.Можно вообще без значения. Если в ini появилось слово Deactivate на какой-то строке, то отключать выполнение команды.
А кто сказал, что они не будут ничего делать? При определённых условиях, которые я описал выше, они должны срабатывать в любом случае. Не писать же мне ещё один скрипт, который будет записывать строку. Зачем плодить для одной задачи лишнее?MVV писал(а):Если в конфиге некоторый параметр равен 0, скрипты не будут ничего делать.
В любом текстовом файле есть понятие строки. Мне всё равно, какое расширение будет у файла. Мне нужно условие: если последняя строка (ключ, не важно) = "Deactivate", то не выполнять команду.MVV писал(а):В INI нет понятия строки. Есть понятия секции и ключа в секции.
Не вижу ничего плохого в том, что скрипт запустится, но ничего не сделает. Окон он не создает, просто втихаря завершится. Зато имеем универсальность.Да, я могу написать условие в Unload-скрипте, при котором действие будет выполняться, но лучше бы его вообще не запускать, чем давать обращаться к нему.
Непортабельное есть = Хелпер. Не вариант. Тебе не нужно читать файл, достаточно дописывать строку в конец. Меня это устроит. Либо пиши ключ без значения. Проверяй по его наличию. Мне будет проще, чем со значением.MVV писал(а):Я так понял, что у тебя нет средств для работы с INI-файлами, а у меня нет никакого желания читать файл вручную и искать там последнюю строку.
Как раз неуниверсальность. Так как скрипты будут зависеть друг от друга. А мне бы этого не хотелось. Они вполне имеют право на отдельное существование.MVV писал(а):Не вижу ничего плохого в том, что скрипт запустится, но ничего не сделает. Окон он не создает, просто втихаря завершится. Зато имеем универсальность.
Я об этом, собственно, и писал выше:MVV писал(а):Тебе всего-то надо перед перезапуском поставить где-либо (полная свобода действий) флаг перезапуска, в Unload-скрипте при наличии этого флага ничего не делать, а в Load-скрипте при его наличии также ничего не делать, но снимать его.
Но как я уже объяснил, мне лучше иметь 2 файла, чем 3.Flasher писал(а):Да, я могу написать условие в Unload-скрипте, при котором действие будет выполняться, но лучше бы его вообще не запускать, чем давать обращаться к нему.
О какой куче и каком файле речь?MVV писал(а):Не дело это - смешивать кучу способов работы с одним файлом.
Не понял, что ты имеешь в виду и уж тем более не понял, как скрипт может быть один, есть у обоих задачи разные (один перезапускает TC, другой вырубает программы)? Теоретически можно вообще все 500 скриптов в один запихать. Только кому такой глючный сыр-бор нужен?MVV писал(а):Кстати, если ты умеешь передавать параметры скриптам, то скрипт может быть и один, просто с разными параметрами для загрузки и выгрузки.
Речь о том, что если файл является INI-файлом, читать и писать его, как текстовый, не совсем корректно.О какой куче и каком файле речь?
Код: Выделить всё
If WScript.Arguments.Count > 0 Then
Select Case WScript.Arguments(0)
Case "Load"
WScript.Echo "Load"
Case "Unload"
WScript.Echo "Unload"
End Select
End IfКод: Выделить всё
[Load]
Command=Execute.vbs Load
[Unload]
Command=Execute.vbs UnloadТак я же выше писал, что расширение меня не волнует Сделай с txt, мне какая разница.MVV писал(а):Речь о том, что если файл является INI-файлом, читать и писать его, как текстовый, не совсем корректно.
Создание файла происходит дольше, чем удаление и перезапись одного слова. Не вижу смысла.MVV писал(а):Можно даже не писать ничего никуда, просто создай в папке плагина или вообще во временной папке пустой файл с именем вида $tc_restarting$, а после завершения рестарта удаляй. Имя логичное и понятное, и проверять наличие флага проще, чем читать файл.
Не понимаю, к чему мне скрипт загрузки? Что он мне даст? Что я должен им загружать?MVV писал(а):А завести скрипты загрузки и выгрузки в один файл считаю вполне разумным - они ведь делают симметричные вещи:
Ну, не хочу я к скриптам подвязывать ещё один файл.MVV писал(а):С текстовым ты и сам без проблем справишься из скрипта))
Так а как это относится к моей задаче? Мне загружать-то ничего таким образом не надо. Мои скрипты по логике не объединимы, у них цели разные.MVV писал(а):Одна часть скрипта загружает фоновые программы, другая - выгружает, и т.п., всё на виду.
Что-то команда и без этого уже неприлично разрослась... По-хорошему, не очень правильно этот функционал включать в команду, это надо бы проверять до попытки запуска. В Autoit для этого, например, есть функция ProcessExists. В общем, формально не против, но надо обдумать как.HA3APET писал(а):Очень бы хотелось ключик для ShellExec, что бы если программа уже запущена (висит в процессах), она не запускалась.
Вопрос "обработки" произвольных файлов слишком обширен. Что понимается под обработкой? Вставить после определенной строки или вставить по заданному смещению в файле? Вставить с замещением или нет? Файл бинарный или текстовый? Если текстовый, то какая кодировка файла?LonerD писал(а):Раз сейчас нет такой возможности - то просьба на будущее ввести возможность обработки текстовых файлов (ini,cfg), в которых нет разделения на секции.
Нет. Может быть в будущем, но не в этой версии точно.LonerD писал(а):Поддерживается ли в операторах сравнения конъюнкция и дизъюнкция?
Можно подумать. Только в каком виде должно быть представление? Дело в том, что из системы нельзя получить напрямую коды языков в том виде, как принято в TC (RUS, DEU и т.д.).LonerD писал(а):Просьба включить в следующую версию переменную, определяющую язык запущенной ОС.
MVV писал(а):Кстати, Loopback, как насчет добавления для функции ShellExec параметра /WAIT, позволяющего дождаться выполнения задачи перед выполнением следующей команды автозапуска?
Flasher писал(а):Я бы вообще ожидание по умолчанию сделал без всяких ключей.
А другие запускают различные резиденты... Так что если уж делать, то пусть лучше /WAIT.MVV писал(а):Тогда добавить флаг /NOWAIT.
Можно в отдельном плагине сделать функцию, которая будет возвращать число (или строковое представление числа). А брать это число из функции типа GetUserDefaultLCID (возвращает текущую ЛОКАЛЬ) или GetUserDefaultUILanguage (возвращает ЯЗЫК ИНТЕРФЕЙСА). И вообще можно информационный модуль сделать, который будет возвращать эти параметры, разрядность системы и т.п.Можно подумать. Только в каком виде должно быть представление? Дело в том, что из системы нельзя получить напрямую коды языков в том виде, как принято в TC (RUS, DEU и т.д.).
Пусть будет /WAIT. А можно сделать оба, и опцию, задающую поведение по умолчанию.А другие запускают различные резиденты... Так что если уж делать, то пусть лучше /WAIT.