Можно конкретнее как указывать срок.KGB писал(а):Срок - тип Double, а не целое число. Было тут
Архив: Технология создания плагинов
Re: Технология создания плагинов
-
- Сообщения: 659
- Зарегистрирован: 08:54, 13.07.2010
- Откуда: Чебоксары, Россия
- Контактная информация:
Re: Технология создания плагинов
Добавить функцию отсюда: http://commfort.com/ru/forum/viewtopic. ... 931#p46931anonim писал(а): Можно конкретнее как указывать срок.
И вызвать так:
Код: Выделить всё
aDataToSend := fTextToAnsiString('Repeater')+ //имя виртуального пользователя
fIntegerToAnsiString(0)+ //тип идентификации
fTextToAnsiString(uSenderLogin)+ //объект идентификации
fIntegerToAnsiString(2)+ //тип ограничения
fTextToAnsiString(uChannel)+ //канал ограничения
fDoubleToAnsiString(1.0)+ //срок
fTextToAnsiString('123')+//Причина
fIntegerToAnsiString(1);//тип анонимности
CommFortProcess(dwPluginID, 1040, PAnsiChar(aDataToSend), Length(aDataToSend))
Re: Технология создания плагинов
Не работает.KGB писал(а):Добавить функцию отсюда: http://commfort.com/ru/forum/viewtopic. ... 931#p46931
И вызвать так:Должно заработать.Код: Выделить всё
aDataToSend := fTextToAnsiString('Repeater')+ //имя виртуального пользователя fIntegerToAnsiString(0)+ //тип идентификации fTextToAnsiString(uSenderLogin)+ //объект идентификации fIntegerToAnsiString(2)+ //тип ограничения fTextToAnsiString(uChannel)+ //канал ограничения fDoubleToAnsiString(1.0)+ //срок fTextToAnsiString('123')+//Причина fIntegerToAnsiString(1);//тип анонимности CommFortProcess(dwPluginID, 1040, PAnsiChar(aDataToSend), Length(aDataToSend))
-
- Сообщения: 659
- Зарегистрирован: 08:54, 13.07.2010
- Откуда: Чебоксары, Россия
- Контактная информация:
Re: Технология создания плагинов
А если указать тип идентификации 3? А то ограничение по IP адресу, а передается логин, как я понял.
Re: Технология создания плагинов
Указал 3 сразу забанил. Теперь понял ошибку спасибо.KGB писал(а):А если указать тип идентификации 3? А то ограничение по IP адресу, а передается логин, как я понял.
Re: Технология создания плагинов
Помогите!!!
Дорогие программисты, кодеры и просто те, кто может написать простой плагин. Не могли бы вы утратить немножечко времени и записать видеоролик по созданию плагина? Просто и самому надо и я думаю другим не помешает... И если можно, то сделайте так, чтобы в плагине (Плагины-"О плагине") в меню "О плагине" стояла совершенно любая картинка (неважно: маленькая или большая - главное чтоб картинка была.) И ещё: чтобы в том же пункте был например текст размера 22, красный и жирный....
Дорогие программисты, кодеры и просто те, кто может написать простой плагин. Не могли бы вы утратить немножечко времени и записать видеоролик по созданию плагина? Просто и самому надо и я думаю другим не помешает... И если можно, то сделайте так, чтобы в плагине (Плагины-"О плагине") в меню "О плагине" стояла совершенно любая картинка (неважно: маленькая или большая - главное чтоб картинка была.) И ещё: чтобы в том же пункте был например текст размера 22, красный и жирный....
Re: Технология создания плагинов
Прежде всего ты знаешь язык программирования, например Delphi,C++ и др.. ???Zka писал(а):Помогите!!!
Дорогие программисты, кодеры и просто те, кто может написать простой плагин. Не могли бы вы утратить немножечко времени и записать видеоролик по созданию плагина? Просто и самому надо и я думаю другим не помешает... И если можно, то сделайте так, чтобы в плагине (Плагины-"О плагине") в меню "О плагине" стояла совершенно любая картинка (неважно: маленькая или большая - главное чтоб картинка была.) И ещё: чтобы в том же пункте был например текст размера 22, красный и жирный....
Re: Технология создания плагинов
У меня вопрос такой:
Я примерно знаю как сделать форму в окне чата я разобрался (спасибо SJ за пример).
Глядя на плагины PaintBord и FileSender оч интересно стало как там реализованы дополнительные пункты контексного меню и дополнительная иконка на панели задач окна чата (там где иконки "обьявления" "список каналов" и т.д.)
Я примерно знаю как сделать форму в окне чата я разобрался (спасибо SJ за пример).
Глядя на плагины PaintBord и FileSender оч интересно стало как там реализованы дополнительные пункты контексного меню и дополнительная иконка на панели задач окна чата (там где иконки "обьявления" "список каналов" и т.д.)
Re: Технология создания плагинов
Код: Выделить всё
#include <windows.h>
typedef VOID __stdcall (*typeCommFortProcess)(DWORD dwPluginID, DWORD dID, BYTE * bOutBuffer, DWORD dwOutBufferSize);
typedef DWORD __stdcall (*typeCommFortGetData)(DWORD dwPluginID, DWORD dwID, BYTE * bInBuffer, DWORD dwInBufferSize, BYTE * bOutBuffer, DWORD dwOutBufferSize);
extern "C" __declspec(dllexport) BOOL PluginStart(DWORD dwThisPluginID, typeCommFortProcess, typeCommFortGetData);
extern "C" __declspec(dllexport) VOID PluginStop();
extern "C" __declspec(dllexport) VOID PluginProcess(DWORD dwID, BYTE * bInBuffer, DWORD dwInBufferSize);
extern "C" __declspec(dllexport) DWORD PluginGetData(DWORD dwID, BYTE * bInBuffer, DWORD dwInBufferSize, BYTE * bOutBuffer, DWORD dwOutBufferSize);
extern "C" __declspec(dllexport) BOOL PluginPremoderation(DWORD dwID, wchar_t * wText, DWORD *dwTextLength);
extern "C" __declspec(dllexport) VOID PluginShowOptions();
extern "C" __declspec(dllexport) VOID PluginShowAbout();
//---------------------------------------------------------------------------
BOOL PluginStart(DWORD, typeCommFortProcess, typeCommFortGetData) { return TRUE; }
VOID PluginStop() {}
VOID PluginProcess(DWORD, BYTE *, DWORD) {}
BOOL PluginPremoderation(DWORD, wchar_t *, DWORD *) { return FALSE; }
DWORD PluginGetData(DWORD, BYTE *, DWORD, BYTE *, DWORD) { return 0; }
VOID PluginShowOptions() {}
VOID PluginShowAbout() {}
Сообщение:
Код: Выделить всё
Application error (503, 503, 247, 0): "Access violation at address 0050EC0B in module 'CommFort.exe'. Read of address 00000504"
Код: Выделить всё
Module 1 (13) is activated
- Вложения
-
- cfplg.png
- (23.28 КБ) 106 скачиваний
Re: Технология создания плагинов
Вроде как в плагин старт недостаточно просто вернуть тру. Там надо сохранить идентификаторы какие-то и еще всякая хрень... покажи полный кодPluginStart(DWORD, typeCommFortProcess, typeCommFortGetData) { return TRUE; }
Re: Технология создания плагинов
Это и есть полный код.cilvay писал(а): покажи полный код
Добавление этого:
Код: Выделить всё
...
DWORD dwPluginID;
typeCommFortProcess CommFortProcess;
typeCommFortGetData CommFortGetData;
...
BOOL PluginStart(DWORD dwThisPluginID, typeCommFortProcess func1, typeCommFortGetData func2)
{
dwPluginID = dwThisPluginID;
CommFortProcess = func1;
CommFortGetData = func2;
return TRUE;
}
Re: Технология создания плагинов
больше нет мыслей... надо думать..
Re: Технология создания плагинов
Код: Выделить всё
DWORD PluginGetData(DWORD dwID, BYTE * bInBuffer, DWORD dwInBufferSize, BYTE * bOutBuffer, DWORD dwOutBufferSize)
{//функция передачи данных программе
int iReadOffset = 0; //вспомогательные переменные для упрощения работы с блоком данных
int iWriteOffset = 0;
//при значении dwOutBufferSize равным нулю функция должна вернуть объем данных, ничего не записывая
if(dwID==2800) //предназначение плагина
{
if(dwOutBufferSize==0)
return 4; //объем памяти в байтах, которую необходимо выделить программе
fWriteInteger(bOutBuffer,&iWriteOffset,0); //плагин подходит как для клиента, так и для сервера
return 4;//объем заполненного буфера в байтах
}
else if(dwID==2810) //название плагина (отображается в списке)
{
UnicodeString uName = L"NULL: проверочный плагин";//название плагина
int iSize = uName.Length()*2+4;
if(dwOutBufferSize==0)
return iSize; //объем памяти в байтах, которую необходимо выделить программе
fWriteText(bOutBuffer, &iWriteOffset, uName);
return iSize;//объем заполненного буфера в байтах
}
return 0;//возвращаемое значение - объем записанных данных
}
Когда пишете программу, всегда думайте о том, что её может затем поддерживать психопат и насильник, который знает где вы живёте.
— Martin Golding
— Martin Golding
Re: Технология создания плагинов
вот тока что хотел сказать, но меня опередили
Я то думаю почему код полный как заявили а название плагина еще и с расширением отображается как в папке
Я то думаю почему код полный как заявили а название плагина еще и с расширением отображается как в папке
Re: Технология создания плагинов
Вроде как PluginGetData не может быть пустой, посмотри пример NULL плагина.
UPD: всех почти одновременно осенило.
UPD: всех почти одновременно осенило.