Autorun

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

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

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

Сообщение MVV »

Могут, конечно, но почему бы не передать некоторые данные, поиск которых занимает некоторое время, но которые уже найдены?
Собственно идея была именно в этом. Если возникнут какие-нибудь мысли насчет такой информации - можно ее добавить в структуру.
Кстати, сделай первым членом структуры поле с ее размером. Тогда плагин сможет по размеру структуры понять, присутствует ли нужное ему поле в структуре - например, если плагин используется в более старой версии. Этот часто использующийся прием несложен и в то же время удобен (в интерфейсе плагинов ТК он тоже используется).
Autorun парсит строку и вызывает из соответствующего плагина функцию Autorun_ExecFunc, которой передает имя MyFunc и массив параметров.
Ага, так идея виртуальных функций смотрится еще интереснее, хотя все равно использоваться это будет лишь при запуске ТК. Осталось как следует описать это дело:) кстати, по-английски бы тоже описать и выложить на wincmd.ru.

Кстати, для примера ты можешь свою movebutton вынести в плагин, а в пример конфига вставить команду для загрузки. :)

Проблема с загрузкой DLL пока следующая: DLL загружается и выгружается в основном потоке, поэтому все, что выполняется в функции DllMain, выполняется в основном потоке - например, если добавить туда отображение сообщения, ТК будет висеть, пока не нажмешь ОК. А в экспортируемой функции, вызываемой после загрузки DLL, все ок. Это надо документировать.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

MVV писал(а):Кстати, сделай первым членом структуры поле с ее размером.
Разумно. Сделаю.
MVV писал(а):Ага, так идея виртуальных функций смотрится еще интереснее, хотя все равно использоваться это будет лишь при запуске ТК. Осталось как следует описать это дело кстати, по-английски бы тоже описать и выложить на wincmd.ru.
Зато универсально при минимуме кода :)
Всё опишу, разумеется, но чуть позже.
MVV писал(а):Кстати, для примера ты можешь свою movebutton вынести в плагин, а в пример конфига вставить команду для загрузки.
Это в планах.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Вот уж не знаю, что твой плагин делает, но хуки после него ставить ваще нереально... :!:
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

MVV
Ну не знаю... ничего особенного, а уж тем более связанного с хуками. В чистом виде после загрузки, плагин только получает пути тотала из переменных, окно текущей копии тотала через EnumWindows и список команд из TOTALCMD.INC. Далее стартует новый поток, в котором выполняются команды. Собственно, всё.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Да я и сам понимаю, что всё, но как видишь... И прямо из DllMain пробовал вызывать функцию инициализации, и из твоего плагина (в отдельном потоке). Попробовать еще интереса ради загрузить DLL, из которой загрузить эту DLL...

Кстати, а зачем через EnumWindows? Куда проще маленький цикл с FindWidnowEx, где проверять принадлежность окна процессу. И callback-функция не нужна.

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

bool GetMainWnd(bool Override=0) {
	if (hMainWnd&&!Override) return 0;
	HWND hwnd=0;
	DWORD pid=GetCurrentProcessId(), wndpid;
	while (hwnd=FindWindowEx(0, hwnd, L"TTOTAL_CMD", 0)) {
		GetWindowThreadProcessId(hwnd, &wndpid);
		if (pid!=wndpid) continue;

		hMainWnd=hwnd;
		return 1;
	}

	return 0;
}
(на Delphi будет примерно то же самое)
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

MVV писал(а):Кстати, а зачем через EnumWindows?
Да теперь уже и не вспомню...


В общем, вторая бета: скачать.

Поменял обработку необязательных параметров - вроде да, стало удобнее. За счет этого ликвидировал команду SetOption. MoveButton вынесена в отдельный плагин к плагину :)
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Во, уже приличное описание. И необязательные параметры теперь указывать куда удобнее.

Предлагаю называть плагины так: Autorun_MoveButton.dll, Autorun_HideMenu.dll и т.п., чтобы подчеркнуть их принадлежность к автозапуску.

Еще предлагаю в первом посте добавлять ссылки на модули:) например, на этот пост с моим Autorun_HideMenu.
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

MVV писал(а):Предлагаю называть плагины так: Autorun_MoveButton.dll, Autorun_HideMenu.dll и т.п., чтобы подчеркнуть их принадлежность к автозапуску.
Не возражаю.
MVV писал(а):Еще предлагаю в первом посте добавлять ссылки на модули например, на этот пост с моим Autorun_HideMenu.
Извините, старые сообщения могут редактировать только модераторы
Надо просить разблокировать :)
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Loopback писал(а):Надо просить разблокировать :)
Тут просить. И потом поддерживать актуальную инфу в первом посте:)

А вообще, как уже упоминалось, надо сделать хоть какую английскую документацию - и на wincmd.ru.
Последний раз редактировалось MVV Вс июн 20, 2010 08:29, всего редактировалось 1 раз.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

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

Сообщение Loopback »

MVV писал(а):А вообще, как уже упоминалось, надо сделать хоть какую английскую документацию - и на wincm.ru.
Обычно я с английской и начинаю, но тут сначала для широкого распространения не планировалось. Не проблема, к релизу напишу.
Avada писал(а):Достаточно написать, например, мне в личку — что в какое место поста и в каком виде добавить.
Да это понятно, но хотелось бы просто иметь возможность редактировать первый пост и модераторов по каждой правке не дергать.
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

Разблокировал. Но вообще, на будущее, выше дали ссылку на тему, где надо постить запросы на разблокировку. Так будет быстрее и с гарантией, т.к. в ворохе обсуждений я могу и проглядеть, что кому-то там понадобилось править старый пост.
Почему же, ё-моё, ты нигде не пишешь "ё"?
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

CaptainFlint
Спасибо.
Я ссылку видел, решил просто заняться этим завтра (т.е. теперь уже сегодня).
Loopback
Сообщения: 1646
Зарегистрирован: Пн сен 07, 2009 09:29

Сообщение Loopback »

Выложил плагин на wincmd.ru, теперь его постоянное место там.

В релиз добавил функцию IniWrite, идея которой возникла после прочтения этой темы, и которая, как мне кажется, может быть весьма востребована авторами сборок :)
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Loopback писал(а):Выложил плагин на wincmd.ru, теперь его постоянное место там.
Замечательно, что это наконец-то произошло.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Ответить