Miranda NG Official Community Forum

Miranda NG русскоязычный форум => Плагины => Topic started by: ru.usa on 06 09 2015, 10:38:04

Title: Создание плагина на c# - автоматизированная информационный бот
Post by: ru.usa on 06 09 2015, 10:38:04
Доброго времени.
Нужен плагин и предпочёл бы его написать самостоятельно. Хочется иметь что-то вроде плагина "балтун", но сложнее. Что бы система работала примерно как автоинформаторы у сотовых операторов. Клиент выбирает рубрики ответами и в итоге получает информацию. Так же информационная система (плагин) должна уметь отправлять/получать, например, E-mail или выполнять HTTP запросы (связываться с другими сервисами), обрабатывать данные и бог весть что ещё делать.
Очень хотелось бы сделать всё самому. Может кто-нибудь поделиться сабжом на этот счёт? Пишу на C#.
Спасибки.
Title: Re: Создание плагина на c# - автоматизированная информационный бот
Post by: unsane on 06 09 2015, 11:11:31
Можно воспользоваться наработками ForNeVeR'a (https://github.com/ForNeVeR/hell-api), но я не знаю насколько этот код работоспособен на данный момент.
Title: Re: Создание плагина на c# - автоматизированная информационный бот
Post by: ru.usa on 06 09 2015, 14:09:42
Можно воспользоваться наработками ForNeVeR'a (https://github.com/ForNeVeR/hell-api), но я не знаю насколько этот код работоспособен на данный момент.
Спасибо. Пытаюсь втыкать. Последний раз 2 года назад редактировалось. Может быть такое, что она сильно устарела?
Title: Re: Создание плагина на c# - автоматизированная информационный бот
Post by: Mikalair on 06 09 2015, 14:27:09
ru.usa, а вы попробуйте - заодно нам расскажете.  :)
Title: Re: Создание плагина на c# - автоматизированная информационный бот
Post by: ru.usa on 06 09 2015, 16:10:04
ru.usa, а вы попробуйте - заодно нам расскажете.  :)
Пока не могу собрать даже. там:
Code: [Select]
Ошибка 1 error C1083: Не удается открыть файл включение: newpluginapi.h: No such file or directory c:\users\ххх\downloads\hell-api-master\hell-api-master\helladapter\common.h 7 1 HellAdapter
Title: Re: Создание плагина на c# - автоматизированная информационный бот
Post by: ru.usa on 06 09 2015, 16:26:50
Товарищи, быть может, у кого-то есть сабж в формате "самоучитель степ-бай-степ" на другом языке (например на C++ или типа того)? Быть может, проще освоить на необходимом уровне для написания плагина?
Title: Re: Создание плагина на c# - автоматизированная информационный бот
Post by: Mikalair on 06 09 2015, 18:06:16
ru.usa, а вы уверены, что нужен именно плагин к миранде ? Имхо такие вещи нужно писать на node.js или python. А если сильно хочется плагин к миранде - вон целый репозиторий плагинов, почти все на с++, изучайте.
Title: Re: Создание плагина на c# - автоматизированная информационный бот
Post by: Apollo2k4 on 06 09 2015, 19:56:01
ru.usa, вы уж меня простите т.к. есть сомнения в ваших словах, я (который в С/С++/С# понимает очень, очень смутно) вижу, что вам нужен вот этот заголовочный файл (http://trac.miranda-ng.org/browser/trunk/include/newpluginapi.h).
Title: Re: Создание плагина на c# - автоматизированная информационный бот
Post by: unsane on 06 09 2015, 20:02:36
ru.usa, Есть тестовый плагин (http://svn.miranda-ng.org/main/trunk/plugins/testplugin/). Самое то, чтобы разобраться с процессом создания плагина.
Title: Re: Создание плагина на c# - автоматизированная информационный бот
Post by: ru.usa on 07 09 2015, 08:06:45
ru.usa, а вы уверены, что нужен именно плагин к миранде ? Имхо такие вещи нужно писать на node.js или python. А если сильно хочется плагин к миранде - вон целый репозиторий плагинов, почти все на с++, изучайте.
Плагин для Миранды понравилось из-за того что этого бота тогда можно использовать для любого протокола в этой самой IM. А если писать просто приложение, то придётся каждый протокол самому рисовать. Опять же Миранда в принципе даёт всяких интересных свистелок.
Title: Re: Создание плагина на c# - автоматизированная информационный бот
Post by: ru.usa on 07 09 2015, 12:33:46
ru.usa, вы уж меня простите т.к. есть сомнения в ваших словах, я (который в С/С++/С# понимает очень, очень смутно) вижу, что вам нужен вот этот заголовочный файл.
Спасибо, подошло и собралось. :THUMBS UP:
Но dll не видится в миранде ng.
Title: Re: Создание плагина на c# - автоматизированная информационный бот
Post by: ru.usa on 07 09 2015, 12:53:44
ru.usa, Есть тестовый плагин. Самое то, чтобы разобраться с процессом создания плагина.
Спасибо. А это в VS должно открываться? Мой 2013 говорит
the system cannot find the file specified
Title: Re: Создание плагина на c# - автоматизированная информационный бот
Post by: unsane on 07 09 2015, 13:11:52
ru.usa, 2012 vs не поддерживается.
проекты есть для 2010, 2013 и 2015 студии.

P.S. плагин подзабросили. внес пару правок.
Title: Re: Создание плагина на c# - автоматизированная информационный бот
Post by: ru.usa on 07 09 2015, 14:41:12
проекты есть для 2010, 2013 и 2015 студии.
Я опечатался. У меня 2013. Т.е. плагины отсюда http://svn.miranda-ng.org/main/trunk/plugins/ (http://svn.miranda-ng.org/main/trunk/plugins/) должны открываться у меня и собираться? Или только тестовый?
Спасибо
Title: Re: Создание плагина на c# - автоматизированная информационный бот
Post by: watcher on 07 09 2015, 15:12:55
Т.е. плагины отсюда http://svn.miranda-ng.org/main/trunk/plugins/ должны открываться у меня и собираться? Или только тестовый?

В 2013 все должны собираться.
Title: Re: Создание плагина на c# - автоматизированная информационный бот
Post by: Niko on 04 10 2015, 23:26:52
Автор темы, поделитесь новостями, пожалуйста! Меня тоже разработка плагина на C# интересует.
Title: Re: Создание плагина на c# - автоматизированная информационный бот
Post by: DoReMi on 07 10 2015, 11:22:50
Автор темы, поделитесь новостями, пожалуйста! Меня тоже разработка плагина на C# интересует.

а меня - готовый плагин "информационный бот"
Title: Re: Создание плагина на c# - автоматизированная информационный бот
Post by: unsane on 09 10 2015, 21:12:34
Накидал на досуге плагин (https://github.com/aunsane/MirDotNet) для загрузки .net'ных "плагинов".

Spoiler
Code: [Select]
using System;
using System.Runtime.InteropServices;
using MirandaNG;
using static MirandaNG.Core;

namespace TestPluginDotNet
{
    public class TestPlugin : Plugin
    {
        [DllImport("user32.dll", CharSet = CharSet.Unicode)]
        public static extern int MessageBox(IntPtr hWnd, string text, string caption, uint type);

        private IntPtr hEvent;
        private IntPtr hService;

        protected override void Load()
        {
            hEvent = CreateHookableEvent("test/test");
            HookEvent("test/test", OnHook);
            hService = CreateServiceFunction("test/test", Service);
            HookEvent("Miranda/System/ModulesLoaded", OnModulesLoaded);
        }

        private IntPtr Service(IntPtr wParam, IntPtr lParam)
        {
            NotifyEventHooks(hEvent, IntPtr.Zero, IntPtr.Zero);
            return IntPtr.Zero;
        }

        private int OnHook(IntPtr wParam, IntPtr lParam)
        {
            MessageBox(IntPtr.Zero, "It's ALIVE!!!", "", 0);
            return 0;
        }

        private int OnModulesLoaded(IntPtr wParam, IntPtr lParam)
        {
            CallService("test/test", IntPtr.Zero, IntPtr.Zero);
            return 0;
        }
    }
}