Качаем скиллы: создаем и подключаем С# DLL к ZennoPoster

  • Автор темы Автор темы tony11111
  • Дата начала Дата начала

tony11111

Client
Регистрация
29.11.2017
Сообщения
37
Реакции
69
Баллы
18
45918


- уровень "игрового мастерства" игрока, навык, умение, мастерство.

В применении Зеннопостера приходит момент, когда начинается активная работа с кодом С#. Сначала мы повторяем один и тот же код, затем копипастим, следующий уровень - своя библиотека сниппетов. Но есть еще один замечательный способ, который позволяет сохранять нужный нам код для многократного использования в наших проектах - DLL библиотеки С#.
DLL библиотека - файл, куда Вы складываете нужные вам методы. Все в одном файле, структурировано, разложено по полочкам (классам), подробно вами прокомментировано, всегда можно отредактировать код методов, подключается в Зеннопостер, как обычная dll'ка.

Создаем свою библиотеку
Для создания библиотеки нам потребуется установленная Visual Studio (VS). Мануалов на эту тему море, самое простое перейти на сайт Microsoft и скачав бесплатную "коммьюнити" версию, установить ее.

Итак, VS установлена, теперь по шагам:

1. Файл --> Создать --> Проект или Ctrl+Shift+N

46047


2. Выбираем Классическое приложение --> Библиотека классов
  • Задаем Имя, например, myFirstZennoDll.
  • Запоминаем Расположение, чтобы легче искать, или выбираем любой удобный нам путь.
  • Жмем "ОК"
46048


Перед нами заготовка для работы:

46052


Теперь для возможности обращения к объектной модели Зеннопостера, нужно добавить ссылки на его библиотеки Dll. Для этого в рабочем окне справа нажимаем на "Обозреватель решений" и в открывшемся окне правым кликом мыши на "Ссылки".

46054


В выпадающем окне нажимаем на "Добавить ссылку".

46055


Откроется окно "Менеджер ссылок".
Жмем на пункт "Обзор" и затем на кнопку "Обзор"

46056


Далее идем в папку с установленным Зеннопостером, например у меня, C:\Program Files\ZennoLab\ZennoPoster Pro\Progs и выбираем следующие файлы:
  1. Global.dll;
  2. ZennoLab.CommandCenter.dll;
  3. ZennoLab.Emulation.dll;
  4. ZennoLab.InterfacesLibrary.dll;
  5. ZennoLab.Macros.dll
После этого обязательно отмечаем выбранные файлы галочками и жмем "ОК"

46057


Теперь, как обычно добавим ссылки на библиотеки в блок "using":

C#:
Развернуть Свернуть Копировать
using ZennoLab.CommandCenter;
using ZennoLab.InterfacesLibrary;
using ZennoLab.InterfacesLibrary.ProjectModel;
using ZennoLab.InterfacesLibrary.ProjectModel.Collections;
using ZennoLab.InterfacesLibrary.ProjectModel.Enums;
using ZennoLab.Macros;
using Global.ZennoExtensions;
using ZennoLab.Emulation;

46058


Белым подсвечены ссылки, которые используются в коде, серые не используются и перед компиляцией их можно удалять. Все ссылки "серые", потому что, пока, не задействованы.

Теперь сделаем что-то полезное, например, добавим в Class1 два метода:

1. Метод "Hi" будет приветствовать нас в логе Зеннопостер;

2. Метод "Hop" будет переходить по ссылке https://zennolab.com/ .

45946


C#:
Развернуть Свернуть Копировать
public string Hi()
        {
            return ("Приветствую!"); // Возвращаем строку
        }

        public void Hop (string strIP = "127.0.0.1", int intPort = 50606, string stringSite = "server")
        {
            ZennoLab.CommandCenter.Instance zennoInstance = new Instance(strIP, intPort, stringSite);
            // Инициализируем инстанс
            Tab Tab1 = zennoInstance.ActiveTab; // Ссылка на вкладку браузера
            Tab1.Navigate("https://zennolab.com/"); // Переход на целевую страницу
            Tab1.WaitDownloading(); // Ожидание загрузки страницы
            return; // Возвращение управления в код
        }

Работа нашей библиотеки в Зеннопостер

Для работы библиотеки нам нужно ее скомпилировать, то есть преобразовать в исполняемый код.
Для этого сохраняем наш проект в VS:

46059


Теперь выбираем или "Сборка" --> "Собрать решение" или "Сборка" --> "Построить ..."

46062

Немного ждем. Все! Наша Dll'ка готова!

Переходим правым кликом по подсвеченной синим вкладке Class1.cs в папку с нашим проектом Dll:

46063


и спускаемся в папку \bin\Debug и здесь находим нашу библиотеку:

46064


Копируем ее в папку Зеннопостера в ExternalAssemblies на вашей машине (C:\Program Files\ZennoLab\RU\ZennoPoster Pro\5.xxx\Progs\ExternalAssemblies).

Подключаем библиотеку в Project Maker, в "Ссылки из GAC":

45954


и добавляем using в общий код:

Посмотреть вложение 45955

Создаем новый проект, добавляем кубик "Свой С# код" и вставляем туда:

C#:
Развернуть Свернуть Копировать
myFirstZennoDll.Class1 Test = new myFirstZennoDll.Class1();
project.SendInfoToLog(Test.Hi());
Test.Hop();

Жмем выполнить. Видим приветствие в логе и открывшуюся страницу Зеннолаба.

Важные замечания:

1. Если проект с добавленной библиотекой открыт в Project Maker или ZP, в Visual Studio нельзя будет сохранить библиотеку. То есть, закрыли PM или ZP, внесли изменения, скомпилировали, снова открыли PM или ZP.

2. Зеннопостер кеширует библиотеку в ExternalAssemblies, поэтому обязательно нужно копировать новую версию библиотеки с заменой.

На этом все!
Открыт новый уровень - создание и подключение своей Dll библиотеки к Зеннопостер.

Понравилась статья - голосуй ЗА!
 
Номер конкурса статей
  1. Двенадцатый конкурс статей
Тема статьи
  1. Нестандартные хаки
Последнее редактирование:
закрыли PM или ZP, внесли изменения, скомпилировали, снова открыли PM или ZP.
Можно было бы описать отладку в CodeCreator'e, где такую проблемность можно избежать.
ZennoLab.CommandCenter.Instance zennoInstance = new Instance(strIP, intPort, stringSite);
Лучше получать и передавать имеющийся инстанс.
 
46070


Не назвал бы такое up skill.
Каждый раз создавать объект класса для того чтобы дернуть нужный метод?
Если уж и доносить до новичков в кодинге новое, то сразу закладывать нормальное понимание/базу, чтобы не было говнокода.
Подобные вспомогательные методы делаются через static методы, и еще лучше в static классе в виде методов расширения.

Годная статья на эту тему с одного из прошлого конкурса.
 
Ориентировал статью не на развитие навыков кодирования C#, поэтому примеры куцые, задача рассказать подробно о способе хранения методов и доступа к ним, через Dll библиотеки.
 
  • Спасибо
Реакции: mikluxo
Статья неплохая , но как по мне мало раскрыла возможности создания библиотеки и ее применения, вернее она раскрыла но куцовато все как-то.
 
А плагины разве не решают эту проблему?
 
  • Спасибо
Реакции: tony11111
@Zymlex,
Хотел описать процесс для тех, кто уже работал в Visual Studio, у нее большие возможности для работы с кодом.

@Moadip,
Спасибо за замечания, конечно, к методу можно обращаться и напрямую, без создания экземпляра объекта.

@AZANIR,
Возможности библиотек действительно очень широкие, можно очень много чего еще написать на эту тему. Цель статьи указать на возможность которая есть, но кто-то о ней не знает.

@tatarin,
Одну и ту же задачу можно решать разными способами, здесь рассказывается именно о библиотеках Dll.
 
  • Спасибо
Реакции: AZANIR
Вы не оправдывайтесь , вас не осуждают ) , а просто расширяют таким образом взгляд на вашу тему!.
 
  • Спасибо
Реакции: Azakim, Nike59 и tony11111
Спасибо, понимаю, поэтому и благодарен всем отписывающимся )
 
  • Спасибо
Реакции: frion-seo
Использование dll в своих проектах очень облегчает написание кода, можно также выносить блоки кода в свои кубики/плагины (начиная с версии 5.20) и использовать их.
 
  • Спасибо
Реакции: tony11111
Друг, ты красавчег. Весь день угрохал на то чтобы запустить свою длл в зенке. Твой пример сразу завелся, оказалось что dll у меня .net core была. Далее танцы с бубнами возникли при добавлении своего кода. Зенка код видит - но ругается страшным матом. В общем пришлось подписать плагин и через gacutil добавить, только тогда заработало.
 
  • Спасибо
Реакции: seodamage и tony11111
Небольшой нюанс. При создании своих dll с целью использования их в зеннопостер, версия NetFramework должна быть не выше 4.5.2, иначе возможен конфликт версий и ошибки в зеннопостер, пока там не повысят версию C#.
 
  • Спасибо
Реакции: Jufel, Manfred и tony11111
Небольшой нюанс. При создании своих dll с целью использования их в зеннопостер, версия NetFramework должна быть не выше 4.5.2, иначе возможен конфликт версий и ошибки в зеннопостер, пока там не повысят версию C#.
на zp5.39 запустилась с 4.6.1))
 
  • Спасибо
Реакции: tony11111
  • Спасибо
Реакции: frion-seo
Разработчики Зеннопостера не даром свой хлеб едят )
 
Техническая статья - всегда хорошо, тем более, что скиллованные коллеги обратили внимание на некоторые упущения в коде. Спасибо.

@radv @Viking01 всё дело в том, фичи из какой версии языка используются в библиотеке. Фреймворк 4.6.1 говорит о максимально возможной версии 6.0 C#, но если там нет методов из этой версии языка, а по факту 5.0 и ниже, значит с запуском в Зеннопостер проблем быть не должно.
 
  • Спасибо
Реакции: tony11111
@Zymlex,
Хотел описать процесс для тех, кто уже работал в Visual Studio, у нее большие возможности для работы с кодом.
Так работу в сторонней IDE я и подразумевал, но перенос в PM - это гемор.
на zp5.39 запустилась с 4.6.1))
Можно сразу на 4.8 рабочие сборки делать.
Тут ещё стоит дополнить, что мало кто знает про Dispose и потом удивляются, почему постер память отжирает.
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)