Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Current »

Описание

Общий код - это функционал ZennoPoster расширяющий возможности стандартных кубиков C#. Общий код используется для вставки дополнительных классов и функций, которые используются другими экшенами C#.

Using-директивы служат для доступа к функциям и классам и создания пространства имён (namespaсes).

Работа с общим кодом предусматривает, что у пользователя уже имеются базовые знания C#

Как добавить действие в проект?

Через контекстное меню Добавить действиеСвой кодДирективы using и общий код

Либо воспользуйтесь умным поиском.

При добавлении действия в панели статических блоков появится новый блок “Директивы using и общий код“.

Где это можно применить?

  • Для более эффективной и удобной работы с C# кодом

  • Для создания новых пространств имён

  • Для организации работы с большими объемами кода, чтобы не было конфликтов в пространствах имён

Как работать с экшеном?

Окно “Директивы using и общий код“ состоит из двух табов: общий код и директивы using.

Общий код

Представляет собой редактор кода с подсветкой синтаксиса во многом аналогичный редактору кодаC# код (Си шарп код .net) . В нём также можно в контекстном меню получить доступ к базовому функционалу по редактированию кода: копирование, вставка, комментирование, поиск, замена и т. д.

Кроме того, возможно загружать общий код из своего файла в формате .txt или .cs (C# source file) - этому служит чекбокс и поле в нижней части окна.

В верхней части редактора перечислены все using используемые в проекте, а ниже идет пример объявления namespace ZennoLab.OwnCode. Пользователи по аналогии могут создавать свои пространства имён и в дальнейшем обращаться к ним из экшенов C#.

Для доступа к функциям и методам общего кода их нужно объявлять с модификатором доступа public . Классы можно объявлять статичными (public static), если не нужно работать с объектами этого класса. Если наследование не требуется, то сразу лучше объявить класс как public sealed.

В общем коде невозможно напрямую получить доступ к сущностям instance или project также как из кубиков C#. Поэтому для работы, например с инстансом, эти объекты необходимо инициировать через new (Instance instance = new Instance("127.0.0.1", 40500, "server");) или передать их через аргументы функций. Аналогично с переменными проекта - их значения необходимо передавать посредством аргументов функций.

Директивы Using

Этот таб имеет две области. В верхней пользователь может добавить namespaces, которые требуются для выполнения кода в экшенах C#. Например, если пользователю необходимо парсить XML, то он должен добавить using System.Xml;.

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


Примеры использования

В примере ниже в общем коде используется передача в функцию HtmlClick объекта instance и затем поиск HTML-элемента по атрибутам и клик по нему. В случае успеха или не успеха возвращается строка для контроля результатов.

namespace ZennoLab.OwnCode
{
	public class CommonCode
	{
		public static string HtmlClick(Instance instance) {
			HtmlElement he = instance.ActiveTab.FindElementByAttribute("div", "class", "html", "regexp", 0);
			if (he.IsVoid) {
				return "fail";
			} else {
				he.Click();
				return "success";
			}
		}
    }
}

 Для вызова этой функции используется кубик C# со следующей командой:
return ZennoLab.OwnCode.CommonCode.HtmlClick(instance);
В случае, если этот HTML элемент будет обнаружен на странице, то по нему будет произведен клик, если нет, придёт сообщение “fail“. Такое использование обосновано, если в проекте есть много мест где требуется кликнуть по одному и тому же элементу.


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

public static Image SetImageOpacity(Image image, float opacity)  
{  
    try  {  
		Bitmap bmp = new Bitmap(image.Width, image.Height);
        //создание графики из картинки
        using (Graphics gfx = Graphics.FromImage(bmp)) {
            //создание объекта color matrix  
            ColorMatrix matrix = new ColorMatrix();      
            //установка прозрачности 
            matrix.Matrix33 = opacity;  
            //создание новых атрибутов
            ImageAttributes attributes = new ImageAttributes();      
            //установка цвета прозрачности картинки
            attributes.SetColorMatrix(matrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);    
            //отрисовываем картинку
            gfx.DrawImage(image, new Rectangle(0, 0, bmp.Width, bmp.Height), 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, attributes);
        }
        return bmp;  
    }  
    catch (Exception ex) {  
        return null;  
    }  
} 

А вот так эта функция вызывается из экшена C#:
Image img = OwnCode.CommonCode.SetImageOpacity(Image.FromFile(project.Directory + "//image.jpg"), .5f);

Полученное изображение из файла обрабатывается с помощью эффекта наложения полупрозрачности и затем может быть сохранено на диск.

Полезные ссылки

  • No labels