Autorun

Обсуждение только плагинов и утилит для Total Commander.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Flasher писал(а):Насколько это жертвенно? Цеплять хотя бы бесшаблонные маски получится?
Теоретически сделать можно что угодно. Вопрос, насколько это реально нужно - при запуске тотала запускать документы через внутренние ассоциации? Я что-то не могу придумать ни одного сценария, где это может понадобиться.
Еще момент: функция ShellExecute сама определяет, исполняемый ли файл дан в качестве параметра, или документ. Тут же придется это как-то определять вручную, и наверняка это не будет универсальным решением.
В общем, если будут доводы в пользу полезности фичи - возможно и сделаю, но в любом случае отдельной командой, в отдельном плагине.
Flasher писал(а):А если блокировать проги на полный запуск, но оставлять в памяти идентификаторы процессов для их последующего закрытия?
Вообще, как раз эти дела лучше бы делать скриптом... там где есть полноценные переменные и много нужных функций.
Autorun задумывался только для выполнения команд при автозапуске, не при завершении. Чтобы красиво и прозрачно реализовывать такие задумки, нужно вводить такое понятие, как "событие - завершение тотала". И в этом блоке писать завершающие операции. Само-собой, это потребует переписать изрядную часть кода.
HA3APET писал(а):Нельзя ли сделать завершение процесса, более "мягким" с завершением всех его дочерних процессов?
Я бы не назвал это "мягким" или чем-то в этом роде. Ведь в этом случае просто дополнительно убиваются процессы, вызванные из родительского. Это больше похоже на лечение насморка гильотиной.
Поиск кое-что дал по этому вопросу. Есть и другие способы убирания значков, от попытки корректного закрытия программы через сообщения (что, понятно, может и не сработать), до убийственно корявых - вплоть до программного прогона мышки над треем :wink: Но ни одного достаточно надежного нет, это недоработка трея в винде.
В общем, стоит ли со всем этим заморачиваться ради фантомного значка в трее - не уверен.
HA3APET
Сообщения: 151
Зарегистрирован: Пн фев 22, 2010 05:43

Сообщение HA3APET »

Loopback
Думаю стоит, иначе после многократного открытия-закрытия ТС будет вот такая картина из фантомных значков
Изображение
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

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


HA3APET, а тебе эти значки сильно нужны в трее? Может, поместить их в скрытую часть области уведомлений (всегда скрывать значок)? Тогда они будут скапливаться там и не будут плодиться на самой панели задач.
HA3APET
Сообщения: 151
Зарегистрирован: Пн фев 22, 2010 05:43

Сообщение HA3APET »

MVV
Да, некоторые не дохнут по taskkill /T, но таких не так много.
Можно тогда организовать как бы двойное завершение, сперва корректное через taskkill /T, а потом на всякий случай taskkill /F

Попробовал ваше дополнение Starter, спасибо за него. Всё отлично,мне понравилось, но можно ли убрать отображение консоли? А то этот свёрнутый батник всю малину портит. Может задействовать уже готовый для этих нужд Hidcon. Или можно сделать, что бы подхватывался не только Starter.bat, но и Starter.exe?
HA3APET
Сообщения: 151
Зарегистрирован: Пн фев 22, 2010 05:43

Сообщение HA3APET »

MVV писал(а): HA3APET, а тебе эти значки сильно нужны в трее? Может, поместить их в скрытую часть области уведомлений (всегда скрывать значок)? Тогда они будут скапливаться там и не будут плодиться на самой панели задач.
В том то и дело, что не нужны) Вариант со скрыванием не очень интересен. Хочется, что бы всё было идеально, совершенно)
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Поставил KatMouse, проверил - у меня он taskkill /T убивается сразу, без /T - ровно с трех раз, в обоих случаях значок исчезает. Всё, что пробовал у себя другое - значок исчезает и без /T. В общем, ясности нет, может просто сама программа на скрине кривовата? Что это такое?

В принципе, попробовать прибивать дерево можно, если taskkill /T делает только это.
HA3APET
Сообщения: 151
Зарегистрирован: Пн фев 22, 2010 05:43

Сообщение HA3APET »

Loopback
Программа на скрине - tcamper, но себя так ведут ещё очень много программ. Изгаляюсь над своей сборкой drweb уже не один год. Так там тоже спайдер агент оставляет фантомный значок, если убивать через диспетчер задач или через taskkill /F, но по taskkill /T всё отлично.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Понятия не имею, как завершение дерева процессов может что-то изменить, если программа создает всего один процесс. Сколько раз писал программы, добавляющие значки в трей, всегда при убийстве процесса значок оставался.
HA3APET писал(а):Попробовал ваше дополнение Starter, спасибо за него. Всё отлично,мне понравилось, но можно ли убрать отображение консоли? А то этот свёрнутый батник всю малину портит. Может задействовать уже готовый для этих нужд Hidcon. Или можно сделать, что бы подхватывался не только Starter.bat, но и Starter.exe?
Неужели появляющаяся на секунду кнопка панели задач так мозолит глаза? С помощью любого редактора ресурсов замени unicode-строку bat на exe, чтобы запускался экзешник, а не батник (такая строка там одна, по смещению 0x0418). :)
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Loopback писал(а):Вопрос, насколько это реально нужно - при запуске тотала запускать документы через внутренние ассоциации? Я что-то не могу придумать ни одного сценария, где это может понадобиться.
Ну, к примеру, ты сам писал про открытие html при запущенном браузере. К чему, раз с твоей точки зрения документы открывать не требуется? Я, например, на рабочем месте хочу запускать некое описание в листерном плагине HTMLView, а у меня открывается браузер, который запускается значительно дольше, или ряд документов, которые, в принципе, могут открыться только в прогах в составе сборки ТС и которые нужны в течении некоторой рабочей сессии, потом список через какой-то период удаляется и вписывается новая партия документов, ну и т.д..
Loopback писал(а):В общем, если будут доводы в пользу полезности фичи - возможно и сделаю, но в любом случае отдельной командой, в отдельном плагине.
Меня устроит и отдельный.
Loopback писал(а): Вообще, как раз эти дела лучше бы делать скриптом... там где есть полноценные переменные и много нужных функций.
Хочется всё-таки решать задачу TC-шным интерфейсом.
Loopback писал(а):Autorun задумывался только для выполнения команд при автозапуске, не при завершении.
Но уже фича с /T реализована, несмотря на задумки.
Loopback писал(а):Чтобы красиво и прозрачно реализовывать такие задумки, нужно вводить такое понятие, как "событие - завершение тотала". И в этом блоке писать завершающие операции. Само-собой, это потребует переписать изрядную часть кода.
Хм. И что ты предлагаешь? Отдельную библиотеку? Если так, то кто бы взялся за её написание?
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Flasher писал(а):Ну, к примеру, ты сам писал про открытие html при запущенном браузере. К чему, раз с твоей точки зрения документы открывать не требуется?
Просто чтобы указать ограничение, раз уж функция это может делать. Реальной необходимости да, не вижу. В конце-концов, можно и просто запустить нужный просмотрщик с этим документом в качестве параметра.
Flasher писал(а):Меня устроит и отдельный.
Ок, сделаю из спортивного интереса :)
Flasher писал(а):Но уже фича с /T реализована, несмотря на задумки.
Эти процессы плагин запускает сам. Со сторонними сложнее. Нет, ну можно, конечно, сделать функцию типа "CloseProcessOnExit" c параметром в виде имени процесса, но это довольно коряво.
Flasher писал(а):Хм. И что ты предлагаешь? Отдельную библиотеку? Если так, то кто бы взялся за её написание?
Ну, в принципе MVV выше уже написал плагинчик с батником.

А что касается события на выход, это должно быть сделано в основном плагине. После определенных модификаций. Сделать это можно, будет тогда Autorun не только менеджер загрузки, но и выгрузки. Но вряд ли в ближайшем релизе.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Loopback писал(а):Реальной необходимости да, не вижу.
Для себя, но не для остальных. :wink:
Loopback писал(а):Ок, сделаю из спортивного интереса :)
Это радует.
Loopback писал(а):Со сторонними сложнее. Нет, ну можно, конечно, сделать функцию типа "CloseProcessOnExit" c параметром в виде имени процесса, но это довольно коряво.
А почему бы и нет? В чём корявость?
Loopback писал(а):Ну, в принципе MVV выше уже написал плагинчик с батником.
По батнику я уже отписал.
Loopback писал(а):А что касается события на выход, это должно быть сделано в основном плагине. После определенных модификаций. Сделать это можно, будет тогда Autorun не только менеджер загрузки, но и выгрузки. Но вряд ли в ближайшем релизе.
Это какое-то отношение к способу MVV имеет? Или речь идёт о той самой переписи изрядной части кода?
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Flasher писал(а):Для себя, но не для остальных.
Ну, кроме тебя в защиту идеи пока никто и не высказывался :wink:
Flasher писал(а):А почему бы и нет? В чём корявость?
Не люблю решений, которые требуют для своей работы какой-то специальной обработки, сильно отличающейся от основной реализации. Это как раз тот случай. Сейчас это одна функция, потом появится мысль сделать еще какую-нибудь, и каждую нужно обрабатывать отдельно.

В данном случае правильно будет разделить конфигурацию на две секции - инициализации (что сейчас и есть) и финализации, в которой будут точно так же как и сейчас выполняться команды.
Flasher писал(а):Или речь идёт о той самой переписи изрядной части кода?
Ага, о ней.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Loopback писал(а):Не люблю решений, которые требуют для своей работы какой-то специальной обработки, сильно отличающейся от основной реализации. Это как раз тот случай.
А если то же самое, но отдельной библиотекой?
Loopback писал(а): В данном случае правильно будет разделить конфигурацию на две секции - инициализации (что сейчас и есть) и финализации, в которой будут точно так же как и сейчас выполняться команды.
Это-то я понял. А ещё лучше сделать одну команду (Terminate, например), после которой в cfg можно задать список закрываемых программ, обрамлённый тегами.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Flasher писал(а):А если то же самое, но отдельной библиотекой?
Можно, но просто не хочется тратить время на временные решения.
Flasher писал(а):А ещё лучше сделать одну команду (Terminate, например), после которой в cfg можно задать список закрываемых программ, обрамлённый тегами.
Не лучше, потому что неудобно с точки зрения парсинга. Скорее всего будет что-нибудь вроде:

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

TerminateProcess "proc1.exe" ["proc2.exe" "procN.exe"]
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Loopback писал(а):Скорее всего будет что-нибудь вроде:

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

TerminateProcess "proc1.exe" ["proc2.exe" "procN.exe"]
Думаю, можно не утруждать себя парсингом кучи имен в одной команде, нагляднее будет, если будет несколько строчек с TerminateProcess. А вот поддержка масок бы скорее всего не помешала. Еще, думаю, могла бы быть полезной функция убийства процесса по заголовку или классу окна. Хотя, для решения таких задач есть более специализированные решения.
Ответить