Технология создания плагинов и программ-дополнений

Здесь обсуждаются графические оболочки, боты, языковые файлы и другие дополнения к CommFort 4.
Vary
Сообщения: 10
Зарегистрирован: 01:00, 04.07.2009

Re: Технология создания плагинов и программ-дополнений

Сообщение Vary »

Предложение:
как насчет отправки файла плагином? было бы полезно
Аватара пользователя
supermet
Сообщения: 245
Зарегистрирован: 02:35, 19.07.2009

Re: Технология создания плагинов и программ-дополнений

Сообщение supermet »

Пробовал откомпилировать null плагин на mingw (версия GCC для windows). При нажатии в настройках плагина клавиши "запустить" он не запускается, но кнопки "настройки" и "о плагине" работают. Еще компилировал в Visual C++ 2008. Результат тот же.
В чем может быть проблема?
Аватара пользователя
DIGGER
Сообщения: 264
Зарегистрирован: 13:46, 15.05.2009

Re: Технология создания плагинов и программ-дополнений

Сообщение DIGGER »

В том что плагин ничего не делает! Вы исходный код смотрели? :)
Аватара пользователя
supermet
Сообщения: 245
Зарегистрирован: 02:35, 19.07.2009

Re: Технология создания плагинов и программ-дополнений

Сообщение supermet »

Конечно смотрел! На mingw и VC++ 2008 компилируется нормально, но не запускается. Декорирование функций отключил.
els
Сообщения: 9
Зарегистрирован: 15:16, 10.11.2007

Re: Технология создания плагинов и программ-дополнений

Сообщение els »

supermet
Если честно, то код нульплагина вообще с ошибками, и без корректирования он не должен компилироваться.
Плюс в MSVS C++ нет некоторых директив и заголовочных файлов используемых в примере.

Ну у тебя раз компилируется, значит дело, скорее всего, в экспорте функций, поковыряй в этом направлении.
Аватара пользователя
supermet
Сообщения: 245
Зарегистрирован: 02:35, 19.07.2009

Re: Технология создания плагинов и программ-дополнений

Сообщение supermet »

Я отредактировал исходник, убрал ссылку на vcl, заменил функции ShowMessage на MessageBox и все откомпилировалось, но к сожалению плагин не запустился.
Аватара пользователя
VIRUS
Сообщения: 174
Зарегистрирован: 13:15, 23.11.2008

Re: Технология создания плагинов и программ-дополнений

Сообщение VIRUS »

Я думаю, что все таки проблема в именах экспортируемых функций. Советую вам "вскрыть" свою DLL (если она создалась при компиляции) и посмотреть истинные имена функций с помощью Майкрософтовской утилиты
DEPENDS.rar
(555.09 КБ) 411 скачиваний
. Они должны быть такими http://s49.radikal.ru/i126/0907/8f/c970f03993c4.jpg
Пользователь думает, что в килобайте 1000 байт, а программист думает, что в километре 1024 метра.
Аватара пользователя
supermet
Сообщения: 245
Зарегистрирован: 02:35, 19.07.2009

Re: Технология создания плагинов и программ-дополнений

Сообщение supermet »

У меня такие же имена функций, только порядок другой.
pic1.png
снимок экрана
(98.45 КБ) 144 скачивания
Аватара пользователя
VIRUS
Сообщения: 174
Зарегистрирован: 13:15, 23.11.2008

Re: Технология создания плагинов и программ-дополнений

Сообщение VIRUS »

У меня такие же имена функций.
Вот это самое главное. Значит для проверки работы плагина напишите код в операторе if:

if(dwMessageID==5)
{
MessageBox(NULL,"OK!","Проверка",MB_OK );
}
Пользователь думает, что в килобайте 1000 байт, а программист думает, что в километре 1024 метра.
Аватара пользователя
supermet
Сообщения: 245
Зарегистрирован: 02:35, 19.07.2009

Re: Технология создания плагинов и программ-дополнений

Сообщение supermet »

Я проверил. Все экспортируемые функции работают кроме PluginProcess.
Аватара пользователя
supermet
Сообщения: 245
Зарегистрирован: 02:35, 19.07.2009

Re: Технология создания плагинов и программ-дополнений

Сообщение supermet »

demon9992 писал(а):Помогите, нужно вывести публикуемое сообщение.
Всё перепробывал....

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

var
s: String;

begin
s:=bMessage^;
ShowMessage(s);
Вот такой процедурой можно узнать сообщение:

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

procedure ParseMessFromChanel(bMessage : PString; dwMessageLength : DWORD; var user, ip, chan, txt: String);
var l: integer;
res: TStringStream;
begin
res := TStringStream.Create(String(bMessage));
//пользователь() + текст(название канала) + текст(опубликованное сообщение или состояние)
Res.Position := 0;
res.Read(l, 4);   // узаем длину поля Ника
user:= res.ReadString(l);   // Ник
res.Read(l, 4);            // узнаем длину ip
ip:= res.ReadString(l);        // узнаем ip
res.Read(l, 4);             // длина названия канала
chan:= res.ReadString(l);     // узнаем название канала
res.Read(l, 4);       // узнаем длину текста
txt:= res.ReadString(l);    // узнаем текст
res.Free;
end;
Аватара пользователя
DIGGER
Сообщения: 264
Зарегистрирован: 13:46, 15.05.2009

Re: Технология создания плагинов и программ-дополнений

Сообщение DIGGER »

Не могу понять как так получается что у меня МОЙ плагин работает, у жены на компике работает (Win7 свежепоставленная), а на форуме уже два человека написало что у них не работает, а только чат показывает: "Ошибка при запуске плагина…". У них версия чата 4.30 (как они пишут)

Куда копать?
Maxim Mirgorodsky
Администратор
Сообщения: 6886
Зарегистрирован: 09:56, 27.06.2005

Re: Технология создания плагинов и программ-дополнений

Сообщение Maxim Mirgorodsky »

Ошибка при запуске плагина - значит при выполнении процедуры PluginInit произошло исключение (ошибка). Копать необходимо в сторону чистоты содержимого этой функции :).
Аватара пользователя
DIGGER
Сообщения: 264
Зарегистрирован: 13:46, 15.05.2009

Re: Технология создания плагинов и программ-дополнений

Сообщение DIGGER »

понятно. спасибо. А как узнать подробнее что за исключение?
Вопрос: большую часть кода я могу перенести с PluginInit в DLL_PROCESS_ATTACH, если ошибка в моём коде, то чат тогда будет падать? или показывать более подробную ошибку?

У Вас плагин заработал?


И ещё (только сообразил): PluginInit вызывается когда пользователь НАЖИМАЕТ кнопку "Запустить"? или нет?
Даже если процедуру PluginInit ВООБЩЕ убрать, то кнопки "Настройка" и "О плагине" ДОЖНЫ работать?
Аватара пользователя
VIRUS
Сообщения: 174
Зарегистрирован: 13:15, 23.11.2008

Re: Технология создания плагинов и программ-дополнений

Сообщение VIRUS »

Уважаемые разработчики! Ваша система плагинов очень гибка и простая в использовании, за это огромное спасибо. Хотелось бы еще увидеть команды для получения версии сервера (полезная штука), так вы сможете с помощью разработчиков плагинов предотвращать нелегальное использования серверов ниже текущих версий. Если можно добавьте данную команду и ID 15 для функции CommFortGetData.
Пользователь думает, что в килобайте 1000 байт, а программист думает, что в километре 1024 метра.
Закрыто