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 ... 14, 15, 16 ... 130, 131, 132  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: Fri Mar 11, 2011 16:17    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: Fri Mar 11, 2011 16:21    Post subject: Reply with quote

MVV
Меня устроит.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1274

Post (Separately) Posted: Thu Mar 17, 2011 12:54    Post subject: Reply with quote

HA3APET
Закрытие дерева сделал. Но поможет ли это - не знаю. Протестировал на Camper, его значок у меня остается и при закрытии дерева плагином, и при помощи taskkill /T.

1.4.9.3 beta
Back to top
View user's profile Send private message
HA3APET



Joined: 22 Feb 2010
Posts: 151

Post (Separately) Posted: Sat Mar 19, 2011 19:23    Post subject: Reply with quote

Loopback
Не помогло. На Camper не стоит тестировать, очень кривая программка к сожалению (не в обиду D1P). А вот TCamper отлично уничтожается через taskkill /T, по-экспериментируйте на нём. Судя по тестам, получается сейчас ваш ключ /TT не есть аналог taskkill /T...
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1274

Post (Separately) Posted: Sat Mar 19, 2011 20:07    Post subject: Reply with quote

HA3APET
Было бы что тестировать... Ключ делает то, что можно почерпнуть из описания соответствующего ключа taskkill: "Завершение указанного процесса и всех его дочерних процессов". Возможно, он не повторяет полностью его внутреннюю реализацию.

Я рекурсивно прохожу по процессам, проверяя принадлежность каждого к родительскому процессу. Даже не знаю, что тут можно еще выдумать.
Back to top
View user's profile Send private message
HA3APET



Joined: 22 Feb 2010
Posts: 151

Post (Separately) Posted: Sat Mar 19, 2011 20:20    Post subject: Reply with quote

Loopback
Я в программировании ноль, кроме тестирования ничем помочь не могу.

Вот например у известной консольной утилитки nircmdc есть два похожих параметра:
closeprocess
killprocess
Первый из них корректно завершает процесс и иконка из трея исчезает
Второй убивает процесс, в трее иконка остаётся.

Вот по этой аналогии хочется, что бы ваш плагин умел завершать процесс, а не убивать его.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1274

Post (Separately) Posted: Sat Mar 19, 2011 22:49    Post subject: Reply with quote

HA3APET wrote:
Вот например у известной консольной утилитки nircmdc есть два похожих параметра:

closeprocess
killprocess

Первый из них корректно завершает процесс и иконка из трея исчезает

Второй убивает процесс, в трее иконка остаётся.

Ну, собственно, тут всё логично. Я уже писал, что можно попытаться закрыть процесс корректно с помощью сообщения окну, что closeprocess и делает. Можно добавить такой код, но тут встают некоторые проблемы.

Во-первых, у приложения может быть несколько форм. Если в обычных можно найти ту, у которой нет родителя, то у программ на дельфи сложно надежно определить, какая форма "главная". Можно попытаться посылать сообщения всем подряд, но не знаю, во что это может вылиться.

Во-вторых, окно в силу разных обстоятельств может не отреагировать на сообщение закрытия, или отреагировать с большой задержкой. Чтобы не зависнуть навечно, придется вводить некий таймаут. Если окно не закроется за время таймаута, придется его убить, и иконка опять может остаться. При этом, если таких приложений окажется несколько, закрытие тотала может затянуться.
Back to top
View user's profile Send private message
HA3APET



Joined: 22 Feb 2010
Posts: 151

Post (Separately) Posted: Sat Mar 19, 2011 23:10    Post subject: Reply with quote

Loopback
Вы ввели два параметра для закрытия - T и TT, так пусть один убивает, а другой пытается закрыть. А пользователь сам выберет, что предпочтительнее с конкретной программой.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1274

Post (Separately) Posted: Sat Mar 19, 2011 23:23    Post subject: Reply with quote

HA3APET wrote:
Вы ввели два параметра для закрытия - T и TT, так пусть один убивает, а другой пытается закрыть. А пользователь сам выберет, что предпочтительнее с конкретной программой.

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

Например, так:
/W - пробовать закрыть окна. Стандартный таймаут 1000 мс.
/W1234 - то же самое, но с произвольно заданным таймаутом.
Back to top
View user's profile Send private message
HA3APET



Joined: 22 Feb 2010
Posts: 151

Post (Separately) Posted: Sat Mar 19, 2011 23:57    Post subject: Reply with quote

Loopback
отлично, буду ждать решения.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1274

Post (Separately) Posted: Sun Mar 20, 2011 01:40    Post subject: Reply with quote

Ну вот, сейчас вроде всё как ожидалось работает (/TT /W). Правда, тестировал только на Camper - единственном, с чем у меня наблюдались проблемы.

1.4.9.3 beta
Back to top
View user's profile Send private message
HA3APET



Joined: 22 Feb 2010
Posts: 151

Post (Separately) Posted: Sun Mar 20, 2011 02:50    Post subject: Reply with quote

Loopback
Да всё отлично, для одной программы.
Но если прописать 2 программы
Code:
ShellExec  /TT /W "Camper.exe" "" "%commander_path%\Camper\"
ShellExec  /TT /W "AUTOFx.exe" "" "%commander_path%\autofx\"


то первая убивается (Camper), а вторая завершается. Если поменять местами
Code:
ShellExec  /TT /W "AUTOFx.exe" "" "%commander_path%\autofx\"
ShellExec  /TT /W "Camper.exe" "" "%commander_path%\Camper\"


То опять первая убивается (AUTOFx), значёк остаётся, а вторая завершается и значка нет.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1274

Post (Separately) Posted: Sun Mar 20, 2011 11:36    Post subject: Reply with quote

HA3APET
AUTOFx это что? Дай ссылочку, потестирую.
Back to top
View user's profile Send private message
HA3APET



Joined: 22 Feb 2010
Posts: 151

Post (Separately) Posted: Sun Mar 20, 2011 16:53    Post subject: Reply with quote

Loopback
AUTOFx - после запуска, можно будет в TC вызывать программу-редактор или просмотрщик удерживая левую кнопку мыши на файле, переключаться между F3 и F4 по средней кн мыши.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1274

Post (Separately) Posted: Sun Mar 20, 2011 19:28    Post subject: Reply with quote

Какая-то бредовая ситуация получается Confused Почему-то PID процесса, который получаю из члена hProcess структуры, передаваемой в ShellExecuteEx, получается не такой, который виден в диспетчере задач. Пробовал аж тремя различными способами. При этом hProcess однозначно правильный - процессы на выходе по нему убиваются.

Если запускать процесс с помощью CreateProcess, PID получается правильный. Но в этом случае теряется возможность запустить документ.

В чем дело неясно совершенно. В общем, если решение проблемы не найдется, придется эмулировать работу с документами с помощью FindExecutable или AssocQueryString. Но вряд ли получится это сделать полноценно.
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 ... 14, 15, 16 ... 130, 131, 132  Next
Page 15 of 132

 
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