Страница 24 из 243

Добавлено: Ср сен 21, 2011 09:48
MVV
В смысле перезапуск??? Продумывай свой скрипт, чтобы работал, как надо.

Добавлено: Ср сен 21, 2011 10:10
Flasher
А там нечего продумывать. Просто нужно, чтобы при использовании перезапуска command не срабатывал, иначе он не даст TC запуститься и убъёт все приложения, в то время как нужно перезапускать только TC. Тут именно функция плагина нужна, например, ключ Activate в ini, нулевое значение которого будет отключать выполнение команды плагина. В скрипте перезапуска я буду менять его на 0 до отключения ТС, по умолчанию (без ключа или при отсутствующем значении) и, самое главное, при запуске TC должно выставляться 1, либо ключ должен удаляться (я буду тогда строку добавлять, так даже проще).
Можно вообще без значения. Если в ini появилось слово Deactivate на какой-то строке, то отключать выполнение команды.
Вроде просто. Сделаешь?

Добавлено: Ср сен 21, 2011 11:55
MVV
А не проще ли создать второй конфиг, который будет использоваться твоими скриптами? Или же использовать прямо этот инишник, если скриптовая среда позволяет работать с инишниками. Если в конфиге некоторый параметр равен 0, скрипты не будут ничего делать. Но скрипт при запуске будет это самое значение выставлять в 1 или удалять. Всё элементарно реализуется средствами твоей скриптовой среды - чтение и запись в текстовый файл. Просто лишняя строчка скрипта - выход, если запуск не разрешен.
Можно вообще без значения. Если в ini появилось слово Deactivate на какой-то строке, то отключать выполнение команды.
В INI нет понятия строки. Есть понятия секции и ключа в секции. Порядок секций и строк в рамках секции значения не имеют, имеет значение лишь то, в какой секции параметр находится.

Добавлено: Ср сен 21, 2011 18:53
Flasher
MVV писал(а):Если в конфиге некоторый параметр равен 0, скрипты не будут ничего делать.
А кто сказал, что они не будут ничего делать? При определённых условиях, которые я описал выше, они должны срабатывать в любом случае. Не писать же мне ещё один скрипт, который будет записывать строку. Зачем плодить для одной задачи лишнее?
MVV писал(а):В INI нет понятия строки. Есть понятия секции и ключа в секции.
В любом текстовом файле есть понятие строки. Мне всё равно, какое расширение будет у файла. Мне нужно условие: если последняя строка (ключ, не важно) = "Deactivate", то не выполнять команду.
И потом, я не могу скриптом запрещать выполнение команд плагина.
Да, я могу написать условие в Unload-скрипте, при котором действие будет выполняться, но лучше бы его вообще не запускать, чем давать обращаться к нему.

Добавлено: Ср сен 21, 2011 19:14
MVV
Для INI-файла понятие номера строки значения не имеет. Операции чтения-записи выполняются с помощью функций, которые принимают в параметры имя секции и имя параметра. При этом мне совершенно безразлично, из строки с каким номером данные будут считаны, и в строку с каким номером они будут записаны.

Я так понял, что у тебя нет средств для работы с INI-файлами, а у меня нет никакого желания читать файл вручную и искать там последнюю строку.
Да, я могу написать условие в Unload-скрипте, при котором действие будет выполняться, но лучше бы его вообще не запускать, чем давать обращаться к нему.
Не вижу ничего плохого в том, что скрипт запустится, но ничего не сделает. Окон он не создает, просто втихаря завершится. Зато имеем универсальность.

Тебе всего-то надо перед перезапуском поставить где-либо (полная свобода действий) флаг перезапуска, в Unload-скрипте при наличии этого флага ничего не делать, а в Load-скрипте при его наличии также ничего не делать, но снимать его.

Добавлено: Ср сен 21, 2011 19:41
Flasher
MVV писал(а):Я так понял, что у тебя нет средств для работы с INI-файлами, а у меня нет никакого желания читать файл вручную и искать там последнюю строку.
Непортабельное есть = Хелпер. Не вариант. Тебе не нужно читать файл, достаточно дописывать строку в конец. Меня это устроит. Либо пиши ключ без значения. Проверяй по его наличию. Мне будет проще, чем со значением.
MVV писал(а):Не вижу ничего плохого в том, что скрипт запустится, но ничего не сделает. Окон он не создает, просто втихаря завершится. Зато имеем универсальность.
Как раз неуниверсальность. Так как скрипты будут зависеть друг от друга. А мне бы этого не хотелось. Они вполне имеют право на отдельное существование.
MVV писал(а):Тебе всего-то надо перед перезапуском поставить где-либо (полная свобода действий) флаг перезапуска, в Unload-скрипте при наличии этого флага ничего не делать, а в Load-скрипте при его наличии также ничего не делать, но снимать его.
Я об этом, собственно, и писал выше:
Flasher писал(а):Да, я могу написать условие в Unload-скрипте, при котором действие будет выполняться, но лучше бы его вообще не запускать, чем давать обращаться к нему.
Но как я уже объяснил, мне лучше иметь 2 файла, чем 3.

Добавлено: Ср сен 21, 2011 22:23
MVV
Не дело это - смешивать кучу способов работы с одним файлом.

Кстати, если ты умеешь передавать параметры скриптам, то скрипт может быть и один, просто с разными параметрами для загрузки и выгрузки.

Добавлено: Ср сен 21, 2011 22:30
Flasher
MVV писал(а):Не дело это - смешивать кучу способов работы с одним файлом.
О какой куче и каком файле речь?
MVV писал(а):Кстати, если ты умеешь передавать параметры скриптам, то скрипт может быть и один, просто с разными параметрами для загрузки и выгрузки.
Не понял, что ты имеешь в виду и уж тем более не понял, как скрипт может быть один, есть у обоих задачи разные (один перезапускает TC, другой вырубает программы)? Теоретически можно вообще все 500 скриптов в один запихать. Только кому такой глючный сыр-бор нужен?
Чего тебе стоит сделать зависимость срабатывания от наличия какого-то ключа? Разговоров много, в то время как ты со своей лёгкой программистской руки давно бы сделал желаемое. :wink:

Добавлено: Чт сен 22, 2011 00:26
MVV
О какой куче и каком файле речь?
Речь о том, что если файл является INI-файлом, читать и писать его, как текстовый, не совсем корректно.

Скрипт, который будет перезапускать, и так должен будет записывать параметр - значит, он уже будет зависимым с плагином, куда бы ты не ставил флаг временной блокировки выполнения скриптов плагина. А скрипт, который запускает плагин, автоматически связан с самим плагином. Тут без зависимостей в любом случае никак. Но встроить эту зависимость в скрипт - куда более гибкий и универсальный способ, чем зашить в плагин.

Можно даже не писать ничего никуда, просто создай в папке плагина или вообще во временной папке пустой файл с именем вида $tc_restarting$, а после завершения рестарта удаляй. Имя логичное и понятное, и проверять наличие флага проще, чем читать файл.

А завести скрипты загрузки и выгрузки в один файл считаю вполне разумным - они ведь делают симметричные вещи:

Код: Выделить всё

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

Добавлено: Чт сен 22, 2011 00:32
Flasher
MVV писал(а):Речь о том, что если файл является INI-файлом, читать и писать его, как текстовый, не совсем корректно.
Так я же выше писал, что расширение меня не волнует Сделай с txt, мне какая разница.
MVV писал(а):Можно даже не писать ничего никуда, просто создай в папке плагина или вообще во временной папке пустой файл с именем вида $tc_restarting$, а после завершения рестарта удаляй. Имя логичное и понятное, и проверять наличие флага проще, чем читать файл.
Создание файла происходит дольше, чем удаление и перезапись одного слова. Не вижу смысла.
MVV писал(а):А завести скрипты загрузки и выгрузки в один файл считаю вполне разумным - они ведь делают симметричные вещи:
Не понимаю, к чему мне скрипт загрузки? Что он мне даст? Что я должен им загружать?

Добавлено: Чт сен 22, 2011 10:19
MVV
С текстовым ты и сам без проблем справишься из скрипта)) Я ж говорю, полная универсальность и свобода действий: хочешь создавать файл - создаешь, хочешь писать в файл - пишешь.

А приведенный скрипт - просто пример того, как можно для Load и Unload использовать один файл. Наверняка ты и сам так умел, я лишь напомнил об этом и подчеркнул логичность такого подхода. Одна часть скрипта загружает фоновые программы, другая - выгружает, и т.п., всё на виду.

Добавлено: Чт сен 22, 2011 18:39
Flasher
MVV писал(а):С текстовым ты и сам без проблем справишься из скрипта))
Ну, не хочу я к скриптам подвязывать ещё один файл.
MVV писал(а):Одна часть скрипта загружает фоновые программы, другая - выгружает, и т.п., всё на виду.
Так а как это относится к моей задаче? Мне загружать-то ничего таким образом не надо. Мои скрипты по логике не объединимы, у них цели разные.
В общем, ты отказываешься помочь в доделке начатого, я правильно понял?

Добавлено: Чт сен 22, 2011 22:14
MVV
Да. Не вижу необходимости в хирургическом вмешательстве.

Добавлено: Пт сен 30, 2011 15:58
Loopback
Сколько всего накопилось :)
HA3APET писал(а):Очень бы хотелось ключик для ShellExec, что бы если программа уже запущена (висит в процессах), она не запускалась.
Что-то команда и без этого уже неприлично разрослась... По-хорошему, не очень правильно этот функционал включать в команду, это надо бы проверять до попытки запуска. В Autoit для этого, например, есть функция ProcessExists. В общем, формально не против, но надо обдумать как.
LonerD писал(а):Раз сейчас нет такой возможности - то просьба на будущее ввести возможность обработки текстовых файлов (ini,cfg), в которых нет разделения на секции.
Вопрос "обработки" произвольных файлов слишком обширен. Что понимается под обработкой? Вставить после определенной строки или вставить по заданному смещению в файле? Вставить с замещением или нет? Файл бинарный или текстовый? Если текстовый, то какая кодировка файла?

Одной-двумя командами всё многообразие действий над файлами не покроешь. В общем, такие задачи все же лучше решать полноценным скриптовым языком.
LonerD писал(а):Поддерживается ли в операторах сравнения конъюнкция и дизъюнкция?
Нет. Может быть в будущем, но не в этой версии точно.
LonerD писал(а):Просьба включить в следующую версию переменную, определяющую язык запущенной ОС.
Можно подумать. Только в каком виде должно быть представление? Дело в том, что из системы нельзя получить напрямую коды языков в том виде, как принято в TC (RUS, DEU и т.д.).
MVV писал(а):Кстати, Loopback, как насчет добавления для функции ShellExec параметра /WAIT, позволяющего дождаться выполнения задачи перед выполнением следующей команды автозапуска?
Flasher писал(а):Я бы вообще ожидание по умолчанию сделал без всяких ключей.
MVV писал(а):Тогда добавить флаг /NOWAIT.
А другие запускают различные резиденты... Так что если уж делать, то пусть лучше /WAIT.

Добавлено: Пт сен 30, 2011 16:35
MVV
Можно подумать. Только в каком виде должно быть представление? Дело в том, что из системы нельзя получить напрямую коды языков в том виде, как принято в TC (RUS, DEU и т.д.).
Можно в отдельном плагине сделать функцию, которая будет возвращать число (или строковое представление числа). А брать это число из функции типа GetUserDefaultLCID (возвращает текущую ЛОКАЛЬ) или GetUserDefaultUILanguage (возвращает ЯЗЫК ИНТЕРФЕЙСА). И вообще можно информационный модуль сделать, который будет возвращать эти параметры, разрядность системы и т.п. :)
А другие запускают различные резиденты... Так что если уж делать, то пусть лучше /WAIT.
Пусть будет /WAIT. А можно сделать оба, и опцию, задающую поведение по умолчанию.