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

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

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

Сообщение ster »

мне жалко моего потраченного времени (( но ладно
это предназначено тем кто хочет написать свой плагин:
1. автор напиши нормальную доку по своему плагино строению !!! именно нормальную а не эту отписку!
вобщем:
2. у кого не собирается или не работает плагин собранный под vs
сделать так ! менять __cdecl на __stdcall в насторойках компилятора не нужно.

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

typedef BYTE  (__stdcall *typeClCommFortProcess)(DWORD dwPluginID, DWORD dwMessageID, BYTE * bMessage, DWORD dwMessageLength);
typedef DWORD (__stdcall *typeClGetData)(DWORD dwDataID, BYTE * bBuffer, DWORD dwBufferSize);

typeClCommFortProcess CommFortProcess;
typeClGetData CommFortGetData;


extern "C" __declspec(dllexport) BYTE __stdcall PluginInit(DWORD dwThisPluginID, sPluginInfo *plInfo, typeClCommFortProcess, typeClGetData);
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();

//для провильного экспорта к комфорту
#pragma comment(linker, "/export:PluginInit=_PluginInit@16")
#pragma comment(linker, "/export:PluginTerminate=_PluginTerminate@0")
#pragma comment(linker, "/export:PluginProcess=_PluginProcess@12")
#pragma comment(linker, "/export:PluginShowOptions=_PluginShowOptions@0")
#pragma comment(linker, "/export:PluginShowAbout=_PluginShowAbout@0")
3. для тех кто не понимает неописанного формата пакета {ну автору ж лень!}:
4 0 0 0 -- размер следующего блока {очень надеюсь что 0 0 0 не просто разделитель !}
73 74 65 72 -- собственно данные 1. блок
a 0 0 0
31 30 2e 31 2e 34 2e 32 30 31 собственно данные 2. блок
12 0 0 0
33 30 2e 30 38 2e 32 30 30
....
вобщем вот... дальше сами с этой фигней возитесь !!!
Аватара пользователя
VIRUS
Сообщения: 174
Зарегистрирован: 13:15, 23.11.2008

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

Сообщение VIRUS »

У меня возник вопрос, может кто с таким сталкивался. Например мне нужно получить список пользователей, их в чате больше чем 255 :) у меня получается такое в указателе на массив bMessage 118 2 0 0 - это первые первые четыре байта. Не пойму как сделать из них нормальное число 600 :).
Пользователь думает, что в килобайте 1000 байт, а программист думает, что в километре 1024 метра.
ster
Сообщения: 5
Зарегистрирован: 18:01, 30.08.2009

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

Сообщение ster »

получается только 630 ))

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

char p[]={118, 2,0,0};
int32 users=*((int32*)p);// длинна следующего блока данных.
далее после этих четырех байт и должны начаться пользователи.
Последний раз редактировалось ster 11:16, 31.08.2009, всего редактировалось 2 раза.
Аватара пользователя
VIRUS
Сообщения: 174
Зарегистрирован: 13:15, 23.11.2008

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

Сообщение VIRUS »

ster конечно спасибо за подсказку, но я не могу понять как указателю на строку p можно присвоить массив целых чисел.
Пользователь думает, что в килобайте 1000 байт, а программист думает, что в километре 1024 метра.
ster
Сообщения: 5
Зарегистрирован: 18:01, 30.08.2009

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

Сообщение ster »

VIRUS писал(а):ster конечно спасибо за подсказку, но я не могу понять как указателю на строку p можно присвоить массив целых чисел.
char * -- это не указатель на строку... )) это указатель на массив знаковых восьмибитнух переменнух ))
на тебе вариант номер 2 который еще и более правильный с точки зрения переносимости
char * p=...; //-arr
int32 users_c=p[0];
users_c |= (uint32)p[1]<<8;
users_c |= (uint32)p[2]<<16;
users_c |= (uint32)p[3]<<24;
//))
Аватара пользователя
VIRUS
Сообщения: 174
Зарегистрирован: 13:15, 23.11.2008

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

Сообщение VIRUS »

ster писал(а): char * -- это не указатель на строку... )) это указатель на массив знаковых восьмибитнух переменнух ))
В С++ под строкой подразумевается массив символов.
на тебе вариант номер 2 который еще и более правильный с точки зрения переносимости
char * p=...; //-arr
int32 users_c=p[0];
users_c |= (uint32)p[1]<<8;
users_c |= (uint32)p[2]<<16;
users_c |= (uint32)p[3]<<24;
//))
[/quote]

Кстати вот так тоже можно kol_user=*((int*)bMessage);.
Пользователь думает, что в килобайте 1000 байт, а программист думает, что в километре 1024 метра.
ster
Сообщения: 5
Зарегистрирован: 18:01, 30.08.2009

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

Сообщение ster »

VIRUS писал(а):
ster писал(а): char * -- это не указатель на строку... )) это указатель на массив знаковых восьмибитнух переменнух ))
В С++ под строкой подразумевается массив символов.

???
на тебе вариант номер 2 который еще и более правильный с точки зрения переносимости
Кстати вот так тоже можно kol_user=*((int*)bMessage);
чем это отличается от моего первого варианта ? хм... яж тебе то и написал
Аватара пользователя
VIRUS
Сообщения: 174
Зарегистрирован: 13:15, 23.11.2008

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

Сообщение VIRUS »

Я же не спорю, что ты мне то и показывал, просто я про эту строку кода говорю char * p={118, 2,0,0}; ошибку выдает в CodeGear 2009. Кстати спасибо за подсказку все получилось:), че то сразу не сообразил, что так можно сделать.
Пользователь думает, что в килобайте 1000 байт, а программист думает, что в километре 1024 метра.
ster
Сообщения: 5
Зарегистрирован: 18:01, 30.08.2009

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

Сообщение ster »

VIRUS писал(а):Я же не спорю, что ты мне то и показывал, просто я про эту строку кода говорю char * p={118, 2,0,0}; ошибку выдает в CodeGear 2009. Кстати спасибо за подсказку все получилось:), че то сразу не сообразил, что так можно сделать.
плин только сча заметли... )) гы char p[]={118, 2,0,0}; ты прав ))
DATAMAN
Сообщения: 13
Зарегистрирован: 06:19, 21.08.2009

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

Сообщение DATAMAN »

Прошу прощения, но спросить в общем и негде больше.
Интересует техника отправки изображений в канал. Можно ознакомиться с базовыми понятиями ? Также хотелось взглянуть на простой пример .
Спасибо .
Maxim Mirgorodsky
Администратор
Сообщения: 6869
Зарегистрирован: 09:56, 27.06.2005

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

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

Интересует именно работа с изображениями? В базовых принципах работы плагинов разобрались? Например, публикация текста получается?
Maxim Mirgorodsky
Администратор
Сообщения: 6869
Зарегистрирован: 09:56, 27.06.2005

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

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

ster писал(а):1. автор напиши нормальную доку по своему плагино строению !!! именно нормальную а не эту отписку!
http://www.commfort.com/ru/forum/viewto ... 117#p31117
Maxim Mirgorodsky писал(а):Плагины до сих пор работали в тестовом режиме. К выпуску следующей версии справочная информация по плагинам будет модернизирована.
DATAMAN
Сообщения: 13
Зарегистрирован: 06:19, 21.08.2009

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

Сообщение DATAMAN »

Ну не плагинами .. Ботами . Имею бот, собраный из демки, имитирующий игру в кости . )) Написал за 3 часа . ))
Maxim Mirgorodsky
Администратор
Сообщения: 6869
Зарегистрирован: 09:56, 27.06.2005

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

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

Публикация изображений с помощью программ-дополнений ограничена максимальным размером датаграммы (64 килобайта). Так что необходимо следить чтобы размер сообщения не превышал такой величины.

На странице механизма работы фигурирует сообщение с ID=54 (публикация изображения в канал). Что именно непонятно в его описании?
DATAMAN
Сообщения: 13
Зарегистрирован: 06:19, 21.08.2009

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

Сообщение DATAMAN »

Maxim Mirgorodsky писал(а):На странице механизма работы фигурирует сообщение с ID=54 (публикация изображения в канал). Что именно непонятно в его описании?
Действительно , всё есть ))).
От чегото сначала пишется .. )) А уж потом читается ..
Закрыто