TC Plugins Manager

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

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

Аватара пользователя
funduk
Сообщения: 1515
Зарегистрирован: Вт авг 16, 2005 16:00
Откуда: Санкт-Петербург

Сообщение funduk »

Лучше в плане выполнения своего дела, но не в плане быстроты. Лучше, если юзер решает, что ему важнее.
Аватара пользователя
Alextp
Сообщения: 4957
Зарегистрирован: Вс фев 06, 2005 17:21

Сообщение Alextp »

funduk
Нет, наверное, делать второй вариант запрещения (переименование dll) не буду: много мороки, и мало толку. И вряд ли какой пользователь догадается зайти в настроки и поменять опцию "Режим запрещения плагинов" для того, чтобы избежать лишней перезагрузки TC.
Аватара пользователя
funduk
Сообщения: 1515
Зарегистрирован: Вт авг 16, 2005 16:00
Откуда: Санкт-Петербург

Сообщение funduk »

Автор - барин.
Но вопрос всё-таки есть: почему ты после удаления плагина не шлёшь тоталу команду cm_UnloadPlugins? А то сейчас как получается: установил плаг, посмотрел, что он глючит/не нужен/хуже, чем аналогичный уже имеющийся, удалил из твоей программы, пошёл удалять с диска - а тотал тебе говорит, что файл плагина удалить нельзя. Я ему говорю: "cm_UnloadPlugins," - и файл потом спокойно удаляется. Зачем каждый раз самому "говорить", когда можно автоматизировать?
Аватара пользователя
Alextp
Сообщения: 4957
Зарегистрирован: Вс фев 06, 2005 17:21

Сообщение Alextp »

DrShark писал(а):Не знаю, баг это или нет.
Если в менеджере по-очереди
запрещать плагины и перезапускать
Total Commander без перезапуска
менеджера плагинов,
приоритет каждого последующего
плагина сбрасывается на [0],
то есть не запоминается.
Таким образом у всех запещённых плагинов
приоритет запоминается как [0].
Если запрещать плагины по одному (все время запрещать первый из списка), то приоритет и должен выставляться как [0]. Чтобы этого не было, запрещай, выделив сразу несколько плагинов (клик мышкой с нажатым Ctrl).
Аватара пользователя
Alextp
Сообщения: 4957
Зарегистрирован: Вс фев 06, 2005 17:21

Сообщение Alextp »

funduk
Но вопрос всё-таки есть: почему ты после удаления плагина не шлёшь тоталу команду cm_UnloadPlugins? А то сейчас как получается: установил плаг, посмотрел, что он глючит/не нужен/хуже, чем аналогичный уже имеющийся, удалил из твоей программы, пошёл удалять с диска - а тотал тебе говорит, что файл плагина удалить нельзя.
Я вообще не думал, что команда cm_UnloadPlugins может мне пригодиться. Если она нужна, могу ее, конечно, вызывать.
Когда вызывать - после удаления/редактирования плагина?
Аватара пользователя
funduk
Сообщения: 1515
Зарегистрирован: Вт авг 16, 2005 16:00
Откуда: Санкт-Петербург

Сообщение funduk »

В обоих случаях, если не трудно.
Аватара пользователя
Alextp
Сообщения: 4957
Зарегистрирован: Вс фев 06, 2005 17:21

Сообщение Alextp »

funduk
Добавил поддержку cm_UnloadPlugins, подробнее см. в readme:

http://alextp.wincmd.ru/files/util_TCPlugman_beta.zip

Потестируй pls, нормально ли отрабатывает команда? Я у себя разницы не заметил. Например, открываю листер-плагин, и после посыла команды Тотал никак не реагирует, плагин даже не моргает. Что вообще должно измениться?
Аватара пользователя
SCHMaster
Сообщения: 296
Зарегистрирован: Ср дек 15, 2004 02:32
Откуда: Киев
Контактная информация:

Сообщение SCHMaster »

Что вообще должно измениться?
Должны выгрузится все НЕИСПОЛЬЗУЕМЫЕ плагины. Т.е. после того, когда мы хоть раз нажали F3, тс загружает подряд все плагины в поиске нужного. Если плагин найден, то на этом он останавливается. Но библиотеки при этом не выгружаются (по понятныс причинам - что-б по новой в следующий раз не грузить). С FS (и вроде и с WCX) ситуевина проще - выгружает всегда. А вот если задействован хоть один из Lister-плагинов, то толку никакого - не выгружает. По крайней мере исенно этот плагин. Следовательно и перечитывание настроек, касающихся Lister-плагинов работает некорректно (хоть один, но загружен :) и может испортить всю картину).
Хороший юзер - мертвый юзер
Мои работы
Аватара пользователя
Alextp
Сообщения: 4957
Зарегистрирован: Вс фев 06, 2005 17:21

Сообщение Alextp »

SCHMaster писал(а):С FS (и вроде и с WCX) ситуевина проще - выгружает всегда. А вот если задействован хоть один из Lister-плагинов, то толку никакого - не выгружает. По крайней мере исенно этот плагин.
С листер-плагинами ясно. А с FS как - если я открою панель плагина, то он от cm_UnloadPlugins должен закрыться (или хотя бы моргнуть)? Что-то ничего не происходит...
Аватара пользователя
funduk
Сообщения: 1515
Зарегистрирован: Вт авг 16, 2005 16:00
Откуда: Санкт-Петербург

Сообщение funduk »

Alextp писал(а):Что-то ничего не происходит...
Имхо ничего и не должно происходить визуально заметного в случае с любым типом плагинов. Я эту команду часто использую и никогда не замечал никаких миганий и т.п. А вообще надо бы у Гислера спросить.

Пока работает отлично, но в ридми надо написать, для чего эта команда может быть использована, а также "контектсное" исправить :wink:
Кстати, а почему "Не включайте, если у Вас установлено несколько копий TC с разными ini-файлами."?
SCHMaster писал(а):хоть один, но загружен и может испортить всю картину
Н-да, действительно. Но я обычно (почти) все окна листера закрываю, прежде чем что-то удалять.
Аватара пользователя
Alextp
Сообщения: 4957
Зарегистрирован: Вс фев 06, 2005 17:21

Сообщение Alextp »

funduk писал(а):Имхо ничего и не должно происходить визуально заметного в случае с любым типом плагинов. Я эту команду часто использую и никогда не замечал никаких миганий и т.п. А вообще надо бы у Гислера спросить.
Ладно, выпускаю так, а потом можно и спросить.
Пока работает отлично, но в ридми надо написать, для чего эта команда может быть использована
Не в ридми, в FAQ напишу.
Кстати, а почему "Не включайте, если у Вас установлено несколько копий TC с разными ini-файлами."?
Потому что команда посылается первому найденному окну ТК, без проверки, тот ли ТК запущен, с которым работает программа, или другой. Если запущено несколько копий - команду выполнит только одна...
Аватара пользователя
funduk
Сообщения: 1515
Зарегистрирован: Вт авг 16, 2005 16:00
Откуда: Санкт-Петербург

Сообщение funduk »

без проверки, тот ли ТК запущен, с которым работает программа, или другой. Если запущено несколько копий - команду выполнит только одна...
А почему без проверки-то? Я, например, постоянно запускаю plugman из-под TC, соответственно, родителя plugman знает. А если из plugman'а TC перезапустить, то plugman будет знать и потомка.
Аватара пользователя
Alextp
Сообщения: 4957
Зарегистрирован: Вс фев 06, 2005 17:21

Сообщение Alextp »

funduk писал(а):А почему без проверки-то? Я, например, постоянно запускаю plugman из-под TC, соответственно, родителя plugman знает.
А как я сделаю проверку? Я ищу окно TC так:

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

procedure UnloadPlugins;
const
  EM_DISPLAYBAND = WM_USER+51;
  cm_UnloadPlugins = 2913;
var
  hWnd: THandle;
begin
  hWnd:= FindWindow('TTOTAL_CMD', nil);
  if hWnd=0 then Exit;
  SendMessage(hWnd, EM_DISPLAYBAND, cm_UnloadPlugins, 0);
  Sleep(200);
end;
Аватара пользователя
funduk
Сообщения: 1515
Зарегистрирован: Вт авг 16, 2005 16:00
Откуда: Санкт-Петербург

Сообщение funduk »

Ну, народ как-то узнаёт. Я под винду не программировал.
Edit: а как же ты узнаёшь, какой из них перезапускать? Или ты корректно перезапускаешь, только если один экземпляр?
Аватара пользователя
Alextp
Сообщения: 4957
Зарегистрирован: Вс фев 06, 2005 17:21

Сообщение Alextp »

funduk
Наверное, можно как-то узнать по хендлу окна, с какими параметрами оно запущено.
Как это сделать, я пока не знаю.
И еще: допустим, из TC запустили Plugman, а в нем поменяли ini-файл. Считать родителя (TC) окном, которому надо посылать команду или нет? Или посылать только окнам TC, у которых те же ini-файлы?
Ответить