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

tony11111

Client
Регистрация
29.11.2017
Сообщения
31
Благодарностей
63
Баллы
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 библиотеки к Зеннопостер.

Понравилась статья - голосуй ЗА!
 
Тема статьи
Нестандартные хаки
Номер конкурса статей
Двенадцатый конкурс статей

Для запуска проектов требуется программа ZennoPoster или ZennoDroid.
Это основное приложение, предназначенное для выполнения автоматизированных шаблонов действий (ботов).
Подробнее...

Для того чтобы запустить шаблон, откройте нужную программу. Нажмите кнопку «Добавить», и выберите файл проекта, который хотите запустить.
Подробнее о том, где и как выполняется проект.

Последнее редактирование:

DenisK

Client
Регистрация
28.06.2016
Сообщения
591
Благодарностей
289
Баллы
63

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 370
Баллы
113
закрыли PM или ZP, внесли изменения, скомпилировали, снова открыли PM или ZP.
Можно было бы описать отладку в CodeCreator'e, где такую проблемность можно избежать.
ZennoLab.CommandCenter.Instance zennoInstance = new Instance(strIP, intPort, stringSite);
Лучше получать и передавать имеющийся инстанс.
 

Advert31337

Client
Регистрация
18.12.2016
Сообщения
53
Благодарностей
38
Баллы
18
Спасибо, зашло)
 
  • Спасибо
Реакции: tony11111

Moadip

Client
Регистрация
26.09.2015
Сообщения
509
Благодарностей
824
Баллы
93
46070


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

Годная статья на эту тему с одного из прошлого конкурса.
 

tony11111

Client
Регистрация
29.11.2017
Сообщения
31
Благодарностей
63
Баллы
18
Ориентировал статью не на развитие навыков кодирования C#, поэтому примеры куцые, задача рассказать подробно о способе хранения методов и доступа к ним, через Dll библиотеки.
 
  • Спасибо
Реакции: mikluxo

Valandersi

Client
Регистрация
19.01.2015
Сообщения
1 923
Благодарностей
1 123
Баллы
113
Добротная статья
 
  • Спасибо
Реакции: tony11111

AZANIR

Client
Регистрация
09.06.2014
Сообщения
405
Благодарностей
198
Баллы
43
Статья неплохая , но как по мне мало раскрыла возможности создания библиотеки и ее применения, вернее она раскрыла но куцовато все как-то.
 

tatarin

Client
Регистрация
28.10.2012
Сообщения
805
Благодарностей
137
Баллы
43
А плагины разве не решают эту проблему?
 
  • Спасибо
Реакции: tony11111

tony11111

Client
Регистрация
29.11.2017
Сообщения
31
Благодарностей
63
Баллы
18
@Zymlex,
Хотел описать процесс для тех, кто уже работал в Visual Studio, у нее большие возможности для работы с кодом.

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

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

@tatarin,
Одну и ту же задачу можно решать разными способами, здесь рассказывается именно о библиотеках Dll.
 
  • Спасибо
Реакции: AZANIR

AZANIR

Client
Регистрация
09.06.2014
Сообщения
405
Благодарностей
198
Баллы
43
Вы не оправдывайтесь , вас не осуждают ) , а просто расширяют таким образом взгляд на вашу тему!.
 
  • Спасибо
Реакции: Azakim, Nike59 и tony11111

tony11111

Client
Регистрация
29.11.2017
Сообщения
31
Благодарностей
63
Баллы
18
Спасибо, понимаю, поэтому и благодарен всем отписывающимся )
 
  • Спасибо
Реакции: frion-seo

radv

Client
Регистрация
11.05.2015
Сообщения
3 788
Благодарностей
1 952
Баллы
113
Использование dll в своих проектах очень облегчает написание кода, можно также выносить блоки кода в свои кубики/плагины (начиная с версии 5.20) и использовать их.
 
  • Спасибо
Реакции: tony11111

mikluxo

Client
Регистрация
14.12.2019
Сообщения
1
Благодарностей
2
Баллы
3
Друг, ты красавчег. Весь день угрохал на то чтобы запустить свою длл в зенке. Твой пример сразу завелся, оказалось что dll у меня .net core была. Далее танцы с бубнами возникли при добавлении своего кода. Зенка код видит - но ругается страшным матом. В общем пришлось подписать плагин и через gacutil добавить, только тогда заработало.
 
  • Спасибо
Реакции: seodamage и tony11111

radv

Client
Регистрация
11.05.2015
Сообщения
3 788
Благодарностей
1 952
Баллы
113
Небольшой нюанс. При создании своих dll с целью использования их в зеннопостер, версия NetFramework должна быть не выше 4.5.2, иначе возможен конфликт версий и ошибки в зеннопостер, пока там не повысят версию C#.
 
  • Спасибо
Реакции: Zedx, Manfred и tony11111

Viking01

Client
Регистрация
19.08.2017
Сообщения
228
Благодарностей
151
Баллы
43
Небольшой нюанс. При создании своих dll с целью использования их в зеннопостер, версия NetFramework должна быть не выше 4.5.2, иначе возможен конфликт версий и ошибки в зеннопостер, пока там не повысят версию C#.
на zp5.39 запустилась с 4.6.1))
 
  • Спасибо
Реакции: tony11111

radv

Client
Регистрация
11.05.2015
Сообщения
3 788
Благодарностей
1 952
Баллы
113
  • Спасибо
Реакции: frion-seo

tony11111

Client
Регистрация
29.11.2017
Сообщения
31
Благодарностей
63
Баллы
18
Разработчики Зеннопостера не даром свой хлеб едят )
 

frion-seo

Client
Регистрация
27.02.2011
Сообщения
538
Благодарностей
471
Баллы
63
Отличная статья. Проголосую за тебя !
 
  • Спасибо
Реакции: tony11111

Metrix

Client
Регистрация
03.01.2014
Сообщения
343
Благодарностей
272
Баллы
63
Техническая статья - всегда хорошо, тем более, что скиллованные коллеги обратили внимание на некоторые упущения в коде. Спасибо.

@radv @Viking01 всё дело в том, фичи из какой версии языка используются в библиотеке. Фреймворк 4.6.1 говорит о максимально возможной версии 6.0 C#, но если там нет методов из этой версии языка, а по факту 5.0 и ниже, значит с запуском в Зеннопостер проблем быть не должно.
 
  • Спасибо
Реакции: tony11111

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 370
Баллы
113
@Zymlex,
Хотел описать процесс для тех, кто уже работал в Visual Studio, у нее большие возможности для работы с кодом.
Так работу в сторонней IDE я и подразумевал, но перенос в PM - это гемор.
на zp5.39 запустилась с 4.6.1))
Можно сразу на 4.8 рабочие сборки делать.
Тут ещё стоит дополнить, что мало кто знает про Dispose и потом удивляются, почему постер память отжирает.
 

ZSharp

Client
Регистрация
29.09.2013
Сообщения
395
Благодарностей
126
Баллы
43

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 370
Баллы
113

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