Технология создания плагинов и программ-дополнений
Re: Технология создания плагинов и программ-дополнений
Maxim Mirgorodsky, спасибо за пояснения!
Maxim Mirgorodsky, как можно проверить что я "правильно" указываю версию чата в плагине (знаю что правильно, но у меня "маничка" всё проверять, что бы быть уверенным в своём коде + через дебаггер видно что всё верно, если вдруг чего )
и ещё вопрос: очень трудно делать отладку для чата поскольку он запакован и защищён как раз от отладки, что нибудь можете посоветовать? (кроме быть внимательным при написании кода )
Maxim Mirgorodsky, как можно проверить что я "правильно" указываю версию чата в плагине (знаю что правильно, но у меня "маничка" всё проверять, что бы быть уверенным в своём коде + через дебаггер видно что всё верно, если вдруг чего )
и ещё вопрос: очень трудно делать отладку для чата поскольку он запакован и защищён как раз от отладки, что нибудь можете посоветовать? (кроме быть внимательным при написании кода )
-
- Администратор
- Сообщения: 6873
- Зарегистрирован: 09:56, 27.06.2005
Re: Технология создания плагинов и программ-дополнений
Версия заполняется так же как и другая текстовая информация. Так что ошибки здесь быть не должно.
По запаковке - к сожалению, не могу помочь.
По запаковке - к сожалению, не могу помочь.
-
- Администратор
- Сообщения: 6873
- Зарегистрирован: 09:56, 27.06.2005
Re: Технология создания плагинов и программ-дополнений
В описании технологии создания плагинов и программ-дополнений не были сказаны ограничения строки состояния:
Длина состояния не может превышать 64 символов и не может содержать служебных символов. Строка состояния не может состоять из одних только пробелов.
В новой версии описания технологии работы плагинов эта информация будет включена.
Длина состояния не может превышать 64 символов и не может содержать служебных символов. Строка состояния не может состоять из одних только пробелов.
В новой версии описания технологии работы плагинов эта информация будет включена.
Re: Технология создания плагинов и программ-дополнений
народ просит для канала events:
Есть возможность это дело как-то реализовать в текущей версии чата? (может я не сообразил как?)
что бы можно было вставлять ссылки на приват/ЛС по нажатию правой кнопки на которые показывалось бы контекстное меню.…вызова контекстно-зависимого меню при нажатии на ник как в обычном канале…
Есть возможность это дело как-то реализовать в текущей версии чата? (может я не сообразил как?)
-
- Администратор
- Сообщения: 6873
- Зарегистрирован: 09:56, 27.06.2005
Re: Технология создания плагинов и программ-дополнений
Не совсем понятно что именно нужно.
Re: Технология создания плагинов и программ-дополнений
Сейчас в каналах: при нажатии правой кнопкой на ник появляется меню пользователя (как правой кнопкой на список пользователей). Хочется что была возможность показывать это меню вставляя специальный текст в ссылку (как сейчас private или message) по нажатии на которой всплывало бы контекстное меню пользователя.
В общем народ просит сделать что бы в канале Events тоже можно было вызывать меню пользователя по нажатию на ник.
В общем народ просит сделать что бы в канале Events тоже можно было вызывать меню пользователя по нажатию на ник.
-
- Администратор
- Сообщения: 6873
- Зарегистрирован: 09:56, 27.06.2005
Re: Технология создания плагинов и программ-дополнений
И как это связано с технологией создания плагинов и программ-дополнений?Хочется что была возможность показывать это меню вставляя специальный текст в ссылку
Re: Технология создания плагинов и программ-дополнений
выделенная Вами цитата никак не связана с темой топика — это было лишь моё предположение что бы лучше пояснить что нужно от чата. Если такой возможности в чате сейчас нет, то тогда пойду писать в предложения. (я так понял что нет, потому уже потопал писать в предложения)
Re: Технология создания плагинов и программ-дополнений
Возможно где-то обсуждалось. но не нашёл (плохо искал?):
Как плагину узнать ID пользователя? Или это ещё не реализовано?
Как плагину узнать ID пользователя? Или это ещё не реализовано?
-
- Администратор
- Сообщения: 6873
- Зарегистрирован: 09:56, 27.06.2005
Re: Технология создания плагинов и программ-дополнений
Не реализовано. Будет реализовано в несовместимой версии (потому что тогда систему плагинов все равно придется изменять из-за перехода на юникод).
Вообще в следующей несовместимой версии будет серьезно усилен механизм плагинов, потому что мы избавимся от необходимости сохранения совместимости. Так что ждем пожеланий по этой части в соответствующей теме .
Вообще в следующей несовместимой версии будет серьезно усилен механизм плагинов, потому что мы избавимся от необходимости сохранения совместимости. Так что ждем пожеланий по этой части в соответствующей теме .
Re: Технология создания плагинов и программ-дополнений
Всем привет.
Промучался весь день. Сдвига нет.
компилирует MinGW.
Выходную либу проверяю в DEPENDS имена не декорируются.
Проблема типична работают кнопки настройка и описание. Запуск не происходит. Ставил MsgBox в функцию инициализации. Работает...
Посмотрите по коду где ошибка?
Промучался весь день. Сдвига нет.
Код: Выделить всё
#include <windows.h>
#include <string.h>
struct sPluginInfo
{
char strPluginName[255];
char strPluginDescription[255];
char strPluginVersion[255];
};
struct sBotUserInfo
{
char strBotName[255];
char strBotPassword[255];
bool bIsFemale;
};
DWORD dwPluginID;
typedef BYTE __stdcall (*typeCommFortProcess)(DWORD dwPluginID, DWORD dwMessageID, BYTE * bMessage, DWORD dwMessageLength);
typeCommFortProcess CommFortProcess;
extern "C" __declspec(dllexport) BYTE PluginInit(DWORD dwThisPluginID, sPluginInfo *plInfo, sBotUserInfo *botInfo, typeCommFortProcess);
extern "C" __declspec(dllexport) BYTE PluginTerminate();
extern "C" __declspec(dllexport) BYTE PluginProcess(DWORD dwMessageID, BYTE * bMessage, DWORD dwMessageLength);
extern "C" __declspec(dllexport) void PluginShowOptions();
extern "C" __declspec(dllexport) void PluginShowAbout();
//---------------------------------------------------------------------------
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
return 1;
}
//---------------------------------------------------------------------------
void ShowMessage(char * msg)
{
MessageBoxA(0, msg, "DLL Message", MB_OK | MB_ICONINFORMATION);
}
//---------------------------------------------------------------------------
BYTE PluginInit(DWORD dwThisPluginID, sPluginInfo *plInfo, sBotUserInfo *botInfo, typeCommFortProcess func1)
{
dwPluginID = dwThisPluginID;
strcpy(plInfo->strPluginName,"myPlugin");
strcpy(plInfo->strPluginDescription,"myPlugin description");
strcpy(plInfo->strPluginVersion,"4.40");
strcpy(botInfo->strBotName,"user");
strcpy(botInfo->strBotPassword,"pass");
botInfo->bIsFemale = false;
CommFortProcess = func1;
(*CommFortProcess)(dwPluginID,41,NULL,0);
return 0;
}
//---------------------------------------------------------------------------
BYTE PluginTerminate()
{
return 0;
}
//---------------------------------------------------------------------------
BYTE PluginProcess(DWORD dwMessageID, BYTE * bMessage, DWORD dwMessageLength)
{
if(dwMessageID==5)
{
ShowMessage("Ok");
}
if(dwMessageID == 91)
{
ShowMessage("debug1");
Sleep(10000);
}
return 0;
}
//---------------------------------------------------------------------------
void PluginShowOptions()
{
ShowMessage("Options");
}
//---------------------------------------------------------------------------
void PluginShowAbout()
{
ShowMessage("About");
}
//---------------------------------------------------------------------------
Выходную либу проверяю в DEPENDS имена не декорируются.
Проблема типична работают кнопки настройка и описание. Запуск не происходит. Ставил MsgBox в функцию инициализации. Работает...
Посмотрите по коду где ошибка?
Re: Технология создания плагинов и программ-дополнений
Подключи __stdcall вот так:
Код: Выделить всё
#include <windows.h>
#include <string.h>
struct sPluginInfo
{
char strPluginName[255];
char strPluginDescription[255];
char strPluginVersion[255];
};
struct sBotUserInfo
{
char strBotName[255];
char strBotPassword[255];
bool bIsFemale;
};
DWORD dwPluginID;
typedef BYTE __stdcall (*typeCommFortProcess)(DWORD dwPluginID, DWORD dwMessageID, BYTE * bMessage, DWORD dwMessageLength);
typeCommFortProcess CommFortProcess;
extern "C" __declspec(dllexport) BYTE __stdcall PluginInit(DWORD dwThisPluginID, sPluginInfo *plInfo, sBotUserInfo *botInfo, typeCommFortProcess func1);
extern "C" __declspec(dllexport) BYTE __stdcall PluginTerminate();
extern "C" __declspec(dllexport) BYTE __stdcall PluginProcess(DWORD dwMessageID, BYTE * bMessage, DWORD dwMessageLength);
extern "C" __declspec(dllexport) void __stdcall PluginShowOptions();
extern "C" __declspec(dllexport) void __stdcall PluginShowAbout();
//---------------------------------------------------------------------------
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
return 1;
}
//---------------------------------------------------------------------------
void __stdcall ShowMessage(char * msg)
{
MessageBoxA(0, msg, "DLL Message", MB_OK | MB_ICONINFORMATION);
}
//---------------------------------------------------------------------------
BYTE __stdcall PluginInit(DWORD dwThisPluginID, sPluginInfo *plInfo, sBotUserInfo *botInfo, typeCommFortProcess func1)
{
dwPluginID = dwThisPluginID;
strcpy(plInfo->strPluginName,"myPlugin");
strcpy(plInfo->strPluginDescription,"myPlugin description");
strcpy(plInfo->strPluginVersion,"4.40");
strcpy(botInfo->strBotName,"user");
strcpy(botInfo->strBotPassword,"pass");
botInfo->bIsFemale = false;
CommFortProcess = func1;
(*CommFortProcess)(dwPluginID,41,NULL,0);
return 0;
}
//---------------------------------------------------------------------------
BYTE __stdcall PluginTerminate()
{
return 0;
}
//---------------------------------------------------------------------------
BYTE __stdcall PluginProcess(DWORD dwMessageID, BYTE * bMessage, DWORD dwMessageLength)
{
if(dwMessageID==5)
{
ShowMessage("Ok");
}
if(dwMessageID == 91)
{
ShowMessage("debug1");
Sleep(10000);
}
return 0;
}
//---------------------------------------------------------------------------
void __stdcall PluginShowOptions()
{
ShowMessage("Options");
}
//---------------------------------------------------------------------------
void __stdcall PluginShowAbout()
{
ShowMessage("About");
}
//---------------------------------------------------------------------------
Последний раз редактировалось VIRUS 18:50, 17.12.2009, всего редактировалось 1 раз.
Пользователь думает, что в килобайте 1000 байт, а программист думает, что в километре 1024 метра.
Re: Технология создания плагинов и программ-дополнений
Ошибка при запуске плагина бла-бла-бла. Плагин остановлен.
Функции стали выглядеть вот так:
PluginInit@16
PluginProcess@12
PluginShowAbout@0
PluginShowOptions@0
PluginTerminate@0
Функции стали выглядеть вот так:
PluginInit@16
PluginProcess@12
PluginShowAbout@0
PluginShowOptions@0
PluginTerminate@0
Re: Технология создания плагинов и программ-дополнений
Какой компилятор?
Пользователь думает, что в килобайте 1000 байт, а программист думает, что в километре 1024 метра.
Re: Технология создания плагинов и программ-дополнений
MinGW 3.4.5
Правильнее будет
gcc-core-3.4.5-20060117-1-vista.tar.gz
gcc-g++-3.4.5-20060117-1-vista.tar.gz
mingw-runtime-3.14.tar.gz
mingw32-make-3.81-2.tar.gz
mingw-utils-0.3.tar.gz
w32api-3.11.tar.gz
binutils-2.18.50-20080109.tar.gz
gdb-6.7.50.20071127-mingw.tar.bz2
Правильнее будет
gcc-core-3.4.5-20060117-1-vista.tar.gz
gcc-g++-3.4.5-20060117-1-vista.tar.gz
mingw-runtime-3.14.tar.gz
mingw32-make-3.81-2.tar.gz
mingw-utils-0.3.tar.gz
w32api-3.11.tar.gz
binutils-2.18.50-20080109.tar.gz
gdb-6.7.50.20071127-mingw.tar.bz2