Страница 12 из 243
Добавлено: Ср мар 09, 2011 16:14
Loopback
Flasher писал(а):Насколько это жертвенно? Цеплять хотя бы бесшаблонные маски получится?
Теоретически сделать можно что угодно. Вопрос, насколько это реально нужно - при запуске тотала запускать документы через внутренние ассоциации? Я что-то не могу придумать ни одного сценария, где это может понадобиться.
Еще момент: функция ShellExecute сама определяет, исполняемый ли файл дан в качестве параметра, или документ. Тут же придется это как-то определять вручную, и наверняка это не будет универсальным решением.
В общем, если будут доводы в пользу полезности фичи - возможно и сделаю, но в любом случае отдельной командой, в отдельном плагине.
Flasher писал(а):А если блокировать проги на полный запуск, но оставлять в памяти идентификаторы процессов для их последующего закрытия?
Вообще, как раз эти дела лучше бы делать скриптом... там где есть полноценные переменные и много нужных функций.
Autorun задумывался только для выполнения команд при автозапуске, не при завершении. Чтобы красиво и прозрачно реализовывать такие задумки, нужно вводить такое понятие, как "событие - завершение тотала". И в этом блоке писать завершающие операции. Само-собой, это потребует переписать изрядную часть кода.
HA3APET писал(а):Нельзя ли сделать завершение процесса, более "мягким" с завершением всех его дочерних процессов?
Я бы не назвал это "мягким" или чем-то в этом роде. Ведь в этом случае просто дополнительно убиваются процессы, вызванные из родительского. Это больше похоже на лечение насморка гильотиной.
Поиск кое-что дал по этому вопросу. Есть и другие способы убирания значков, от попытки корректного закрытия программы через сообщения (что, понятно, может и не сработать), до убийственно корявых - вплоть до программного прогона мышки над треем

Но ни одного достаточно надежного нет, это недоработка трея в винде.
В общем, стоит ли со всем этим заморачиваться ради фантомного значка в трее - не уверен.
Добавлено: Ср мар 09, 2011 16:24
HA3APET
Loopback
Думаю стоит, иначе после многократного открытия-закрытия ТС будет вот такая картина из фантомных значков

Добавлено: Ср мар 09, 2011 16:30
MVV
Да, мне щас тоже попадался вариант прогона мышки над треем - хорошо что сидел, когда читал.

Только не знаю, как оно будет действовать на скрытую часть трея.
HA3APET, а тебе эти значки сильно нужны в трее? Может, поместить их в скрытую часть области уведомлений (всегда скрывать значок)? Тогда они будут скапливаться там и не будут плодиться на самой панели задач.
Добавлено: Ср мар 09, 2011 16:32
HA3APET
MVV
Да, некоторые не дохнут по taskkill /T, но таких не так много.
Можно тогда организовать как бы двойное завершение, сперва корректное через taskkill /T, а потом на всякий случай taskkill /F
Попробовал ваше дополнение Starter, спасибо за него. Всё отлично,мне понравилось, но можно ли убрать отображение консоли? А то этот свёрнутый батник всю малину портит. Может задействовать уже готовый для этих нужд Hidcon. Или можно сделать, что бы подхватывался не только Starter.bat, но и Starter.exe?
Добавлено: Ср мар 09, 2011 16:36
HA3APET
MVV писал(а):
HA3APET, а тебе эти значки сильно нужны в трее? Может, поместить их в скрытую часть области уведомлений (всегда скрывать значок)? Тогда они будут скапливаться там и не будут плодиться на самой панели задач.
В том то и дело, что не нужны) Вариант со скрыванием не очень интересен. Хочется, что бы всё было идеально, совершенно)
Добавлено: Ср мар 09, 2011 16:50
Loopback
Поставил KatMouse, проверил - у меня он taskkill /T убивается сразу, без /T - ровно с трех раз, в обоих случаях значок исчезает. Всё, что пробовал у себя другое - значок исчезает и без /T. В общем, ясности нет, может просто сама программа на скрине кривовата? Что это такое?
В принципе, попробовать прибивать дерево можно, если taskkill /T делает только это.
Добавлено: Ср мар 09, 2011 16:59
HA3APET
Loopback
Программа на скрине - tcamper, но себя так ведут ещё очень много программ. Изгаляюсь над своей сборкой drweb уже не один год. Так там тоже спайдер агент оставляет фантомный значок, если убивать через диспетчер задач или через taskkill /F, но по taskkill /T всё отлично.
Добавлено: Ср мар 09, 2011 17:14
MVV
Понятия не имею, как завершение дерева процессов может что-то изменить, если программа создает всего один процесс. Сколько раз писал программы, добавляющие значки в трей, всегда при убийстве процесса значок оставался.
HA3APET писал(а):Попробовал ваше дополнение Starter, спасибо за него. Всё отлично,мне понравилось, но можно ли убрать отображение консоли? А то этот свёрнутый батник всю малину портит. Может задействовать уже готовый для этих нужд Hidcon. Или можно сделать, что бы подхватывался не только Starter.bat, но и Starter.exe?
Неужели появляющаяся на секунду кнопка панели задач так мозолит глаза? С помощью любого редактора ресурсов замени unicode-строку
bat на
exe, чтобы запускался экзешник, а не батник (такая строка там одна, по смещению 0x0418).

Добавлено: Ср мар 09, 2011 18:34
Flasher
Loopback писал(а):Вопрос, насколько это реально нужно - при запуске тотала запускать документы через внутренние ассоциации? Я что-то не могу придумать ни одного сценария, где это может понадобиться.
Ну, к примеру, ты сам писал про открытие html при запущенном браузере. К чему, раз с твоей точки зрения документы открывать не требуется? Я, например, на рабочем месте хочу запускать некое описание в листерном плагине HTMLView, а у меня открывается браузер, который запускается значительно дольше, или ряд документов, которые, в принципе, могут открыться только в прогах в составе сборки ТС и которые нужны в течении некоторой рабочей сессии, потом список через какой-то период удаляется и вписывается новая партия документов, ну и т.д..
Loopback писал(а):В общем, если будут доводы в пользу полезности фичи - возможно и сделаю, но в любом случае отдельной командой, в отдельном плагине.
Меня устроит и отдельный.
Loopback писал(а):
Вообще, как раз эти дела лучше бы делать скриптом... там где есть полноценные переменные и много нужных функций.
Хочется всё-таки решать задачу TC-шным интерфейсом.
Loopback писал(а):Autorun задумывался только для выполнения команд при автозапуске, не при завершении.
Но уже фича с /T реализована, несмотря на задумки.
Loopback писал(а):Чтобы красиво и прозрачно реализовывать такие задумки, нужно вводить такое понятие, как "событие - завершение тотала". И в этом блоке писать завершающие операции. Само-собой, это потребует переписать изрядную часть кода.
Хм. И что ты предлагаешь? Отдельную библиотеку? Если так, то кто бы взялся за её написание?
Добавлено: Ср мар 09, 2011 21:33
Loopback
Flasher писал(а):Ну, к примеру, ты сам писал про открытие html при запущенном браузере. К чему, раз с твоей точки зрения документы открывать не требуется?
Просто чтобы указать ограничение, раз уж функция это может делать. Реальной необходимости да, не вижу. В конце-концов, можно и просто запустить нужный просмотрщик с этим документом в качестве параметра.
Flasher писал(а):Меня устроит и отдельный.
Ок, сделаю из спортивного интереса
Flasher писал(а):Но уже фича с /T реализована, несмотря на задумки.
Эти процессы плагин запускает сам. Со сторонними сложнее. Нет, ну можно, конечно, сделать функцию типа "CloseProcessOnExit" c параметром в виде имени процесса, но это довольно коряво.
Flasher писал(а):Хм. И что ты предлагаешь? Отдельную библиотеку? Если так, то кто бы взялся за её написание?
Ну, в принципе MVV выше уже написал плагинчик с батником.
А что касается события на выход, это должно быть сделано в основном плагине. После определенных модификаций. Сделать это можно, будет тогда Autorun не только менеджер загрузки, но и выгрузки. Но вряд ли в ближайшем релизе.
Добавлено: Ср мар 09, 2011 22:16
Flasher
Loopback писал(а):Реальной необходимости да, не вижу.
Для себя, но не для остальных.
Loopback писал(а):Ок, сделаю из спортивного интереса

Это радует.
Loopback писал(а):Со сторонними сложнее. Нет, ну можно, конечно, сделать функцию типа "CloseProcessOnExit" c параметром в виде имени процесса, но это довольно коряво.
А почему бы и нет? В чём корявость?
Loopback писал(а):Ну, в принципе MVV выше уже написал плагинчик с батником.
По батнику я уже отписал.
Loopback писал(а):А что касается события на выход, это должно быть сделано в основном плагине. После определенных модификаций. Сделать это можно, будет тогда Autorun не только менеджер загрузки, но и выгрузки. Но вряд ли в ближайшем релизе.
Это какое-то отношение к способу
MVV имеет? Или речь идёт о той самой переписи изрядной части кода?
Добавлено: Ср мар 09, 2011 22:47
Loopback
Flasher писал(а):Для себя, но не для остальных.
Ну, кроме тебя в защиту идеи пока никто и не высказывался
Flasher писал(а):А почему бы и нет? В чём корявость?
Не люблю решений, которые требуют для своей работы какой-то специальной обработки, сильно отличающейся от основной реализации. Это как раз тот случай. Сейчас это одна функция, потом появится мысль сделать еще какую-нибудь, и каждую нужно обрабатывать отдельно.
В данном случае правильно будет разделить конфигурацию на две секции - инициализации (что сейчас и есть) и финализации, в которой будут точно так же как и сейчас выполняться команды.
Flasher писал(а):Или речь идёт о той самой переписи изрядной части кода?
Ага, о ней.
Добавлено: Чт мар 10, 2011 00:36
Flasher
Loopback писал(а):Не люблю решений, которые требуют для своей работы какой-то специальной обработки, сильно отличающейся от основной реализации. Это как раз тот случай.
А если то же самое, но отдельной библиотекой?
Loopback писал(а):
В данном случае правильно будет разделить конфигурацию на две секции - инициализации (что сейчас и есть) и финализации, в которой будут точно так же как и сейчас выполняться команды.
Это-то я понял. А ещё лучше сделать одну команду (
Terminate, например), после которой в cfg можно задать список закрываемых программ, обрамлённый тегами.
Добавлено: Чт мар 10, 2011 10:06
Loopback
Flasher писал(а):А если то же самое, но отдельной библиотекой?
Можно, но просто не хочется тратить время на временные решения.
Flasher писал(а):А ещё лучше сделать одну команду (Terminate, например), после которой в cfg можно задать список закрываемых программ, обрамлённый тегами.
Не лучше, потому что неудобно с точки зрения парсинга. Скорее всего будет что-нибудь вроде:
Код: Выделить всё
TerminateProcess "proc1.exe" ["proc2.exe" "procN.exe"]
Добавлено: Чт мар 10, 2011 10:22
MVV
Loopback писал(а):Скорее всего будет что-нибудь вроде:
Код: Выделить всё
TerminateProcess "proc1.exe" ["proc2.exe" "procN.exe"]
Думаю, можно не утруждать себя парсингом кучи имен в одной команде, нагляднее будет, если будет несколько строчек с TerminateProcess. А вот поддержка масок бы скорее всего не помешала. Еще, думаю, могла бы быть полезной функция убийства процесса по заголовку или классу окна. Хотя, для решения таких задач есть более специализированные решения.