Нужен пример загрузки WLX-плагинов на Delphi

Только для тех, кто пишет плагины под Total Commander. Обмен опытом, решение проблем.

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

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

Нужен пример загрузки WLX-плагинов на Delphi

Сообщение Alextp »

Нужен пример загрузки WLX-плагинов (например, плагина IEView или Imagine) из Delphi-приложения. И корректного освобождения (выгрузки) плагина. Пусть, например, по нажатию кнопки плагин сначала загружается и отображается на форме, а потом по нажатию кнопки корректно выгружается, и форма очищается.

То, что я набросал что называется "на коленке", не работает как надо... Я пока не понял, как привязать плагиновое API к форме или, например, к панели, лежащей на форме...
Аватара пользователя
Nik
Сообщения: 583
Зарегистрирован: Сб янв 01, 2005 13:00
Откуда: Киров
Контактная информация:

Сообщение Nik »

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

Сообщение Alextp »

Все, с помощью пользователя с ghisler.ch разобрался.

То, что получилось, здесь:
http://wincmd.ru/plugring/wdx_guide.html

Исходник здесь:
http://atorg.net.ru/files/util_WdxWlxGuide_src.rar
Аватара пользователя
SCHMaster
Сообщения: 296
Зарегистрирован: Ср дек 15, 2004 02:32
Откуда: Киев
Контактная информация:

Сообщение SCHMaster »

Не, пардон. может это типа "пальцы...", но звыняйтэ... Куда еще проще - отследить загрузку библиотеки (плагина) и вызов первоначальной ф-ц-ии, и закрыте окнаа (и выгрузку DLL, ежели нуна). На wincmd.ru есть классный примрер для листеров... Робяты, не поленитесь уделить ентому делу пол-часа... Ну а если уж никиак - мну на мыло (токи с указанием тесы, иначе - "СПАМ")
Хороший юзер - мертвый юзер
Мои работы
Аватара пользователя
Alextp
Сообщения: 4957
Зарегистрирован: Вс фев 06, 2005 17:21

Сообщение Alextp »

2SCHMaster

Не понял. Зачем отслеживать загрузку DLL и закрытие окна?
Все сделалось проще: DLL загружается, вызывается ListLoad, когда надо выгрузить - вызывается ListCloseWindow и dll выгружается. Все. Что тут надо отслеживать?

Пример для листеров - он для другого. Для того, чтобы написать Lister плагин. А мы здесь пишем внешний загрузчик WLX плагинов (утилиту).
Аватара пользователя
SCHMaster
Сообщения: 296
Зарегистрирован: Ср дек 15, 2004 02:32
Откуда: Киев
Контактная информация:

Сообщение SCHMaster »

И корректного освобождения (выгрузки) плагина
Вот для чего нужно (если нужно) отслеживать момент выгрузки. Т.к. по ListCloseWindow DLL не выгружается, кстати :). А продолжает "висеть" в памяти ТС. Это тоже можно учитесть.
Далее (это насчет проблем привязки плагинного API к форме), ТС перехватывает процедуру окна плагина, и "фильтрует" сообщения, поступающие плагину, отправляя ему далеко не все сообщения. Это тоже учесть нужно. Если проблема в размещении окна плагина на форме, то тут просто - SetWindowPos поможет.
Хороший юзер - мертвый юзер
Мои работы
Аватара пользователя
Alextp
Сообщения: 4957
Зарегистрирован: Вс фев 06, 2005 17:21

Сообщение Alextp »

SCHMaster
Вот для чего нужно (если нужно) отслеживать момент выгрузки. Т.к. по ListCloseWindow DLL не выгружается, кстати . А продолжает "висеть" в памяти ТС. Это тоже можно учитесть.
Я знаю. Ну и разве нужно его из-за этого выгружать? Пусть висит.
При завершении программы выгрузится.
Далее (это насчет проблем привязки плагинного API к форме), ТС перехватывает процедуру окна плагина, и "фильтрует" сообщения, поступающие плагину, отправляя ему далеко не все сообщения. Это тоже учесть нужно.
А как это учесть? Еще раз: не в плагине, а в моем загрузчике WLX.
Пока загрузчик ничего такого (фильтрации сообщений) не делает.
И все работает.
Ответить