Re: Технология создания плагинов и программ-дополнений
Добавлено: 12:33, 26.05.2009
sorry, тупанул.-=SJ=- писал(а):
И в чем опечатка?
Помоему все правильно cfcplug CommFortClientPLUGin
форум поддержки
https://www.commfort.com/ru/forum/
sorry, тупанул.-=SJ=- писал(а):
И в чем опечатка?
Помоему все правильно cfcplug CommFortClientPLUGin
Так будет, если бот будет посылать команду закрытия привата после публикации сообщений в приват.Можно ли отключить только графические Личные Сообщения (Приваты) у клиента чата? При этом сообщения ЛС (Приваты) принимались ботами (плагинами), но не отображались бы графически у клиента.
Это, конечно, неплохо, но не все боты/плагины хорошо закрывают за собой приваты (хотя дополнения, в основом, и пытаются закрыть за собой приват) и большинство дополнений не закрывают случайно открытые чатерами приваты. А как быть с Личными Сообщениями?Maxim Mirgorodsky писал(а):Так будет, если бот будет посылать команду закрытия привата после публикации сообщений в приват.
Хотелось бы четко разделять функциональность клиентских и серверных плагинов. Те плагины, которым для работы полезно было бы полное отключение отображения приватных каналов или сообщений, все-таки, больше подходят для реализации в качестве серверных плагинов. Потому что такие плагины сделают обычную работу за клиентом невозможной.SunnySan писал(а):Это, конечно, неплохо, но не все боты/плагины хорошо закрывают за собой приваты (хотя дополнения, в основом, и пытаются закрыть за собой приват) и большинство дополнений не закрывают случайно открытые чатерами приваты. А как быть с Личными Сообщениями?
На многих страницах форума Вы (разработчики) говорите о преимуществах ЛС, так, думаю, стоит преимущества ЛС использовать и в общении чатеров с дополнениями.
Потому что спецификации протокола непубличны (закрыты).VIRUS писал(а):Maxim Mirgorodsky вопрос такой. Почему вы не хотите рассказать как с помощью PHP-скриптов или JavaScript можно получать количество народа в чате? Это делается в PHP средствами сокетов?
Код: Выделить всё
typedef BYTE __stdcall (*typeCommFortProcess)(DWORD dwPluginID, DWORD dwMessageID, BYTE * bMessage, DWORD dwMessageLength);
typeCommFortProcess CommFortProcess;
Нет! DLL библиотека может быть написана на любом языке программирования. Только есть одно требование. Типы данных, которые функции библиотеки должны принимать и возвращать должны соответствовать типам данных языка в котором DLL написана, например int и integer; float, double и real или другому типу с плавающей точкой и т.д.yaotzin писал(а):похоже плагины dll только должны быть написаны на C++
В этом случае создается указатель на функцию для обработки сообщений, которые нужно отправить клиенту чата. (*CommFortProcess)(dwPluginID,20,aMessageToSend.c_str(),aMessageToSend.Length()); - вот использования данного указателя. Это все сделано потому, что для отправки сообщения в чат используется функция которую клиент-чата передает в качестве параметра функции extern "C" __declspec(dllexport) BYTE PluginInit(DWORD dwThisPluginID, sPluginInfo *plInfo, typeClCommFortProcess, typeClGetData); из DLL.yaotzin писал(а):Пишу плагин на C# хотел спроcить что это такое, зачем это нужно и как его реализовать на C#
Код: Выделить всё
typedef BYTE __stdcall (*typeCommFortProcess)(DWORD dwPluginID, DWORD dwMessageID, BYTE * bMessage, DWORD dwMessageLength); typeCommFortProcess CommFortProcess;
Для функций плагина необходимо использовать соглашение _stdcall. такого нет в c# я не понимаю что это такоеVIRUS писал(а):Нет! DLL библиотека может быть написана на любом языке программирования. Только есть одно требование. Типы данных, которые функции библиотеки должны принимать и возвращать должны соответствовать типам данных языка в котором DLL написана, например int и integer; float, double и real или другому типу с плавающей точкой и т.д.yaotzin писал(а):похоже плагины dll только должны быть написаны на C++
читай в предыдущих постах этой темы, Максим Миргородский давал ссылку на статью по DLL.yaotzin писал(а):VIRUS писал(а):yaotzin писал(а): Для функций плагина необходимо использовать соглашение _stdcall. такого нет в c# я не понимаю что это такое