Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Autorun
Goto page Previous  1, 2, 3 ... 23, 24, 25 ... 131, 132, 133  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Wed Sep 21, 2011 09:48    Post subject: Reply with quote

В смысле перезапуск??? Продумывай свой скрипт, чтобы работал, как надо.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Sep 21, 2011 10:10    Post subject: Reply with quote

А там нечего продумывать. Просто нужно, чтобы при использовании перезапуска command не срабатывал, иначе он не даст TC запуститься и убъёт все приложения, в то время как нужно перезапускать только TC. Тут именно функция плагина нужна, например, ключ Activate в ini, нулевое значение которого будет отключать выполнение команды плагина. В скрипте перезапуска я буду менять его на 0 до отключения ТС, по умолчанию (без ключа или при отсутствующем значении) и, самое главное, при запуске TC должно выставляться 1, либо ключ должен удаляться (я буду тогда строку добавлять, так даже проще).
Можно вообще без значения. Если в ini появилось слово Deactivate на какой-то строке, то отключать выполнение команды.
Вроде просто. Сделаешь?
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Wed Sep 21, 2011 11:55    Post subject: Reply with quote

А не проще ли создать второй конфиг, который будет использоваться твоими скриптами? Или же использовать прямо этот инишник, если скриптовая среда позволяет работать с инишниками. Если в конфиге некоторый параметр равен 0, скрипты не будут ничего делать. Но скрипт при запуске будет это самое значение выставлять в 1 или удалять. Всё элементарно реализуется средствами твоей скриптовой среды - чтение и запись в текстовый файл. Просто лишняя строчка скрипта - выход, если запуск не разрешен.

Quote:
Можно вообще без значения. Если в ini появилось слово Deactivate на какой-то строке, то отключать выполнение команды.

В INI нет понятия строки. Есть понятия секции и ключа в секции. Порядок секций и строк в рамках секции значения не имеют, имеет значение лишь то, в какой секции параметр находится.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Sep 21, 2011 18:53    Post subject: Reply with quote

MVV wrote:
Если в конфиге некоторый параметр равен 0, скрипты не будут ничего делать.
А кто сказал, что они не будут ничего делать? При определённых условиях, которые я описал выше, они должны срабатывать в любом случае. Не писать же мне ещё один скрипт, который будет записывать строку. Зачем плодить для одной задачи лишнее?
MVV wrote:
В INI нет понятия строки. Есть понятия секции и ключа в секции.
В любом текстовом файле есть понятие строки. Мне всё равно, какое расширение будет у файла. Мне нужно условие: если последняя строка (ключ, не важно) = "Deactivate", то не выполнять команду.
И потом, я не могу скриптом запрещать выполнение команд плагина.
Да, я могу написать условие в Unload-скрипте, при котором действие будет выполняться, но лучше бы его вообще не запускать, чем давать обращаться к нему.
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Wed Sep 21, 2011 19:14    Post subject: Reply with quote

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

Я так понял, что у тебя нет средств для работы с INI-файлами, а у меня нет никакого желания читать файл вручную и искать там последнюю строку.

Quote:
Да, я могу написать условие в Unload-скрипте, при котором действие будет выполняться, но лучше бы его вообще не запускать, чем давать обращаться к нему.

Не вижу ничего плохого в том, что скрипт запустится, но ничего не сделает. Окон он не создает, просто втихаря завершится. Зато имеем универсальность.

Тебе всего-то надо перед перезапуском поставить где-либо (полная свобода действий) флаг перезапуска, в Unload-скрипте при наличии этого флага ничего не делать, а в Load-скрипте при его наличии также ничего не делать, но снимать его.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Sep 21, 2011 19:41    Post subject: Reply with quote

MVV wrote:
Я так понял, что у тебя нет средств для работы с INI-файлами, а у меня нет никакого желания читать файл вручную и искать там последнюю строку.
Непортабельное есть = Хелпер. Не вариант. Тебе не нужно читать файл, достаточно дописывать строку в конец. Меня это устроит. Либо пиши ключ без значения. Проверяй по его наличию. Мне будет проще, чем со значением.
MVV wrote:
Не вижу ничего плохого в том, что скрипт запустится, но ничего не сделает. Окон он не создает, просто втихаря завершится. Зато имеем универсальность.
Как раз неуниверсальность. Так как скрипты будут зависеть друг от друга. А мне бы этого не хотелось. Они вполне имеют право на отдельное существование.
MVV wrote:
Тебе всего-то надо перед перезапуском поставить где-либо (полная свобода действий) флаг перезапуска, в Unload-скрипте при наличии этого флага ничего не делать, а в Load-скрипте при его наличии также ничего не делать, но снимать его.
Я об этом, собственно, и писал выше:
Flasher wrote:
Да, я могу написать условие в Unload-скрипте, при котором действие будет выполняться, но лучше бы его вообще не запускать, чем давать обращаться к нему.
Но как я уже объяснил, мне лучше иметь 2 файла, чем 3.
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Wed Sep 21, 2011 22:23    Post subject: Reply with quote

Не дело это - смешивать кучу способов работы с одним файлом.

Кстати, если ты умеешь передавать параметры скриптам, то скрипт может быть и один, просто с разными параметрами для загрузки и выгрузки.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Wed Sep 21, 2011 22:30    Post subject: Reply with quote

MVV wrote:
Не дело это - смешивать кучу способов работы с одним файлом.
О какой куче и каком файле речь?

MVV wrote:
Кстати, если ты умеешь передавать параметры скриптам, то скрипт может быть и один, просто с разными параметрами для загрузки и выгрузки.
Не понял, что ты имеешь в виду и уж тем более не понял, как скрипт может быть один, есть у обоих задачи разные (один перезапускает TC, другой вырубает программы)? Теоретически можно вообще все 500 скриптов в один запихать. Только кому такой глючный сыр-бор нужен?
Чего тебе стоит сделать зависимость срабатывания от наличия какого-то ключа? Разговоров много, в то время как ты со своей лёгкой программистской руки давно бы сделал желаемое. Wink
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Thu Sep 22, 2011 00:26    Post subject: Reply with quote

Quote:
О какой куче и каком файле речь?

Речь о том, что если файл является INI-файлом, читать и писать его, как текстовый, не совсем корректно.

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

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

А завести скрипты загрузки и выгрузки в один файл считаю вполне разумным - они ведь делают симметричные вещи:
Code:
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

Code:
[Load]
Command=Execute.vbs Load

[Unload]
Command=Execute.vbs Unload

_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Thu Sep 22, 2011 00:32    Post subject: Reply with quote

MVV wrote:
Речь о том, что если файл является INI-файлом, читать и писать его, как текстовый, не совсем корректно.
Так я же выше писал, что расширение меня не волнует Сделай с txt, мне какая разница.
MVV wrote:
Можно даже не писать ничего никуда, просто создай в папке плагина или вообще во временной папке пустой файл с именем вида $tc_restarting$, а после завершения рестарта удаляй. Имя логичное и понятное, и проверять наличие флага проще, чем читать файл.
Создание файла происходит дольше, чем удаление и перезапись одного слова. Не вижу смысла.
MVV wrote:
А завести скрипты загрузки и выгрузки в один файл считаю вполне разумным - они ведь делают симметричные вещи:
Не понимаю, к чему мне скрипт загрузки? Что он мне даст? Что я должен им загружать?
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Thu Sep 22, 2011 10:19    Post subject: Reply with quote

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

А приведенный скрипт - просто пример того, как можно для Load и Unload использовать один файл. Наверняка ты и сам так умел, я лишь напомнил об этом и подчеркнул логичность такого подхода. Одна часть скрипта загружает фоновые программы, другая - выгружает, и т.п., всё на виду.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Thu Sep 22, 2011 18:39    Post subject: Reply with quote

MVV wrote:
С текстовым ты и сам без проблем справишься из скрипта))
Ну, не хочу я к скриптам подвязывать ещё один файл.

MVV wrote:
Одна часть скрипта загружает фоновые программы, другая - выгружает, и т.п., всё на виду.
Так а как это относится к моей задаче? Мне загружать-то ничего таким образом не надо. Мои скрипты по логике не объединимы, у них цели разные.
В общем, ты отказываешься помочь в доделке начатого, я правильно понял?
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Thu Sep 22, 2011 22:14    Post subject: Reply with quote

Да. Не вижу необходимости в хирургическом вмешательстве.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1280

Post (Separately) Posted: Fri Sep 30, 2011 15:58    Post subject: Reply with quote

Сколько всего накопилось Smile

HA3APET wrote:
Очень бы хотелось ключик для ShellExec, что бы если программа уже запущена (висит в процессах), она не запускалась.

Что-то команда и без этого уже неприлично разрослась... По-хорошему, не очень правильно этот функционал включать в команду, это надо бы проверять до попытки запуска. В Autoit для этого, например, есть функция ProcessExists. В общем, формально не против, но надо обдумать как.

LonerD wrote:
Раз сейчас нет такой возможности - то просьба на будущее ввести возможность обработки текстовых файлов (ini,cfg), в которых нет разделения на секции.

Вопрос "обработки" произвольных файлов слишком обширен. Что понимается под обработкой? Вставить после определенной строки или вставить по заданному смещению в файле? Вставить с замещением или нет? Файл бинарный или текстовый? Если текстовый, то какая кодировка файла?

Одной-двумя командами всё многообразие действий над файлами не покроешь. В общем, такие задачи все же лучше решать полноценным скриптовым языком.

LonerD wrote:
Поддерживается ли в операторах сравнения конъюнкция и дизъюнкция?

Нет. Может быть в будущем, но не в этой версии точно.

LonerD wrote:
Просьба включить в следующую версию переменную, определяющую язык запущенной ОС.

Можно подумать. Только в каком виде должно быть представление? Дело в том, что из системы нельзя получить напрямую коды языков в том виде, как принято в TC (RUS, DEU и т.д.).

MVV wrote:
Кстати, Loopback, как насчет добавления для функции ShellExec параметра /WAIT, позволяющего дождаться выполнения задачи перед выполнением следующей команды автозапуска?

Flasher wrote:
Я бы вообще ожидание по умолчанию сделал без всяких ключей.

MVV wrote:
Тогда добавить флаг /NOWAIT.

А другие запускают различные резиденты... Так что если уж делать, то пусть лучше /WAIT.
Back to top
View user's profile Send private message
MVV



Joined: 15 Oct 2009
Posts: 4811
Location: Ростов-Дон

Post (Separately) Posted: Fri Sep 30, 2011 16:35    Post subject: Reply with quote

Quote:
Можно подумать. Только в каком виде должно быть представление? Дело в том, что из системы нельзя получить напрямую коды языков в том виде, как принято в TC (RUS, DEU и т.д.).

Можно в отдельном плагине сделать функцию, которая будет возвращать число (или строковое представление числа). А брать это число из функции типа GetUserDefaultLCID (возвращает текущую ЛОКАЛЬ) или GetUserDefaultUILanguage (возвращает ЯЗЫК ИНТЕРФЕЙСА). И вообще можно информационный модуль сделать, который будет возвращать эти параметры, разрядность системы и т.п. Smile

Quote:
А другие запускают различные резиденты... Так что если уж делать, то пусть лучше /WAIT.

Пусть будет /WAIT. А можно сделать оба, и опцию, задающую поведение по умолчанию.
_________________
TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel…
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3 ... 23, 24, 25 ... 131, 132, 133  Next
Page 24 of 133

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group