Скрипты NetView :: Дополнительные функции и типы данных


Ниже приведены специфические типы и функции которые могут использоваться во всех видах скриптов. Кроме этого можно пользоваться:

  • Стандартными типами и функциями паскаля для работы со строками, например такими как функции Copy, Delete, ExtractFilePath и тип TStringList. 

  • Так же можно использовать функции из внешних .dll библиотек. Для этого такую функцию надо объявится в начале программы примерно следующим образом:

    function FindWindow(C1, C2: PChar): Longint; external 'FindWindowA@user32.dll stdcall';

  • Классами Delphi для работы с базами данных через BDE (при наличии оного): TTable, TQuery, TDatabase, TSession (см скрипт NetSearcher'а Generate_DataBase.nvs для примера)

 

Работа с файлами и приложениями

Type TSearchRec=record 

Time:integer; 

Size:integer; 

SizeHigh:integer; 

Attr:integer; 

Name:string; 

FindHandle:integer; 

end;

 

function FindFirst(Path:string; var F: TSearchRec):integer;

Начинает поиск файлов\каталогов в заданном пути по заданной маске.

Path - Путь\маска имени. Например 'C:\WinNT\*.exe'. Если путь начинается не на имя диска и не на \\ то он за начало пути считается каталог \NetView\Scripts.

F - структура в которой хранится информация о найденном файле и состояние процесса поиска

Возвращает 0 если не произошло ошибки иначе возвращает код ошибки

 

function FindNext(var F: TSearchRec):integer;

Продолжает начатый по FindFirst поиск. Возвращает 0 если не произошло ошибки иначе возвращает код ошибки.

 

procedure FindClose(F: TSearchRec);

Закрывает структуру F для освобождения занятых ресурсов.

 

function CopyFile(source:string;target:string;failifexists:boolean): integer;

Копирует файл из source в target. Возвращает 0 если не произошло ошибки иначе возвращает код ошибки. Если путь начинается не на имя диска и не на \\ то он за начало пути считается каталог \NetView\Scripts.

 

function MoveFile(source:string;target:string): integer;

Перемещает файл из source в target. Возвращает 0 если не произошло ошибки иначе возвращает код ошибки. Если путь начинается не на имя диска и не на \\ то он за начало пути считается каталог \NetView\Scripts.

 

function CreateDirectory(s:string): integer;

Создает директорию с путем s. Возвращает 0 если не произошло ошибки иначе возвращает код ошибки. Если путь начинается не на имя диска и не на \\ то он за начало пути считается каталог \NetView\Scripts.

 

function RemoveDirectory(s:string): integer;

Удаляет директорию с путем s. Возвращает 0 если не произошло ошибки иначе возвращает код ошибки. Если путь начинается не на имя диска и не на \\ то он за начало пути считается каталог \NetView\Scripts.

 

function DeleteFile(s:string): integer;

Удаляет файл с путем\именем s. Возвращает 0 если не произошло ошибки иначе возвращает код ошибки. Если путь начинается не на имя диска и не на \\ то он за начало пути считается каталог \NetView\Scripts.

 

function Exec(f:string;s:string;i:integer): Longint;

Запускает приложение\документ
f: путь\имя приложения или документа для запуска
s: строка параметров, для документов обязательно пустая
Флаги в i:

Код Windows Значение Что означает
SW_HIDE 0 запустить спрятанным
SW_SHOWNORMAL 1 запустить нормально
SW_SHOWMINIMIZED 2 запустить минимизированным
SW_SHOWMAXIMIZED 3 запустить максимизированным
SW_SHOWNOACTIVATE 4 не активировать
SW_SHOW 5 запустить показав окно
SW_MINIMIZE 6 запустить минимизированным
SW_SHOWMINNOACTIVE 7 запустить минимизированным не активируя
SW_SHOWNA 8 запустить не активным
SW_RESTORE 9 запустить не развернутым и не свернутым
SW_SHOWDEFAULT 10 запустить так как был запущен NetView
Битовый флаг 128 ожидать пока приложение завершит выполнение, вернуть код завершения



function GetFileSize(f:Longint;var sizeh:Longint): Longint;

Возвращает размер файла. В sizeh записывается старшие 32 бита размера

function CloseFile(f:Longint): Longint;

закрывает файл

function OpenFile(s:string; mode:Longint): Longint;

открывает файл в каталоге SCRIPTS.  Если путь S начинается не на имя диска и не на \\ то он за начало пути считается каталог \NetView\Scripts. Возвращает идентификатор файла или 0
Флаги могут принимать комбинацию следующих значений:
1: открытие файла для чтения
2: открытие файла для записи
4: файл будет создан если не существует
8: файл будет перезаписан

function ReadFile(f:Longint;n:Longint;var s:String): Longint;

Читает строку длиной n из файла. Возвращает количество прочитанных симолов

function SetFilePointer(f:Longint;pl:Longint;ph:Longint;mode:Longint): Longint;

Устанавливает указатель файла. pl, ph - нижний и старший 32bits смещения. mode:
0 :с начала файла
1 :с текущей позиции
2 :от конца файла

function WriteFile(f:Longint;s:String): Longint;

Пишет в файл строку. Возвращает количество записанных символов

 

procedure WriteIni(section:string;varname:string;vardata:string);

Записывает произвольную строку в ini файл настроек NetView. Затем эту настройку можно прочитать с помощью ReadIni

section -имя секции куда записать строку

varname -название ключа

vardata -строка-значение ключа

 

function ReadIni(section:string;varname:string;defaultdata:string):string;

Читает строковое значение ключа ini файла настроек NetView.

section -имя секции где находится строка

varname -название ключа

defaultdata -строка-значение ключа по умолчанию (если ключ отсутствует в ini файле)

Возвращает значение ключа или defaultdata если ключа нету

Управление NetView

function Action(wparam:integer;lparam:integer):integer;

  • Многофункциональная процедура. Коды действий в wparam:
    • NVACTION_RECHECK - перепроверить хост или хосты из списка. Если (wparam and NVACTION_LIST)<>0 то перепроверять список. В lparam -идентификатор списка или 0.(wparam and NVACTION_LIST) - то перепроверять хост. Функция возвращается сразу, не ожидая окончания проверки.
    • NVACTION_RETRACE -перетрассирует хост или список аналогично  NVACTION_RECHECK
    • NVACTION_OPEN - открывает хост с идентификатором в lparam
    • NVACTION_EDIT - открывает окно редактирования хоста с идентификатором в lparam. Возвращает 0 если редактирование отменено.
    • NVACTION_IMGEXPORT - инициирует экспорт визуальной карты с идентификатором списка в lparam
    • NVACTION_SETSTATE - выполняет обновление состояния хоста в списке согласно всем метапеременным. Быстрее чем метод SETHOST класса TNVHOST т.к. не инициирует процедуру перепроверки и не перезаписывает внутренние структуры. В lparam надо засунуть идентификатор хоста.

procedure SaveHostlist(fname:string);

  • Сохраняет текущий хостлист в файл
    • fname -путь\имя файла куда сохранить хостлист

procedure LoadHostlist(fname:string);

  • Загружает данные из файла в хостлист
    • fname -путь\имя файла для загрузки

function GetShareList(host:string):string;

  • Получает список расшаренных по NETBIOS ресурсов с хоста
    • host -имя или адрес хоста
    • Возвращает строку - список ресурсов разделенных символом chr(13). В случае ошибки возвращает строку из одного символа chr(1)

 

Объекты интерфейса с NetView

 

type TNVHOST=class (TOBJECT)
private
ID,NEXTID:integer;
COLOR:integer;
hname,hip:string;
public
procedure GETBYTEXT(txt:string;flags:integer);
procedure GETHOST(xid:integer;flags:integer);
procedure SETHOST;
procedure DELHOST;
function GETMETAVAR(varname:string):string;
procedure SETMETAVAR(varname:string;vardata:string);

procedure TRYAUTH(UseRandom:boolean);
published
constructor CREATE; 

desructor FREE;
end;

  • ID -идентификатор хоста. Вручную менять не надо.
  • NEXTID - идентификатор следующего в списке хоста. Используется дл прохождения всего списка
  • COLOR -цвет хоста в списке. Менять можно, но бестолку. Нетвью сам им управляет
  • hname - имя хоста
  • hip -IP адрес хоста
  • GETBYTEXT(txt:string;flags:integer);
    • txt -имя или IP адрес по которому надо получить ID и прочую инфу.
    • flags:
      • 0 -ищет хост в списке, если не находит устанавливает ID в 0 и возвращается
      • NVOBJ_FORCENEW -ищет хост в списке, если не находит пытается определить его имя или txt - IP или наоборот. Если не получается - устанавливает ID в 0 и возвращается.
      • NVOBJ_FORCENEW or NVOBJ_HOSTNOIP - ищет хост в списке если не находит - добавляет считая что txt - это имя, а IP оставляет пустым
  • GETHOST(xid:integer;flags:integer);
    • Получает данные хоста с идентификатором xid. Если xid=0 то работает в зависимости от flags:
      • 0 - получает первый хост в списке.
      • NVOBJ_SELECTED - получает первый выделенный хост в списке
  • SETHOST - Вносит все изменения в хост. Пока не вызвать SETHOST при изменении полей TNVHOST объекта реально хост не меняется.
  • DELHOST - удалить хост из списка
  • GETMETAVAR(varname:string):string;
    • Возвращает значение метапеременной с именем varname
  • SETMETAVAR(varname:string;vardata:string)
    • Присваивает метапеременной с именем varname значение vardata.
  • TRYAUTH(UseRandom:boolean) 
    • Пытается авторизоваться на хосте с использованием переменных user и pass. Если обе переменных пусты и UseRandom=true то НВ пытается авторизоваться под случайным именем.
  • Список основных метапеременных можно найти здесь

  

type TNVMENUITEM=class (TOBJECT)
private
public
ID,PARENTID:integer;
FLAGS:integer;
MSG:integer;
TXT:string;
procedure REFRESH;
procedure DELETE;

procedure SPLIT;
published
constructor create;

destructor free;
end;

  • ID -идентификатор менюшки.
  • PARENTID -идентификатор родительской менюшки (для иерархических меню)
  • FLAGS - флаги
    • NVMENUFLAG_MAIN - менюшка будет создана в подменю Plug-ins
    • NVMENUFLAG_CONTEXT  - менюшка будет создана в контекстном меню хоста
    • NVMENUFLAG_TRAY - менюшка будет в контекстном треевском меню нетвью
    • NVMENUFLAG_DISABLED - менюшка будет недоступная
    • NVMENUFLAG_CHECKED - слева менюшка будет чекбокс означающий что она включена
    • NVMENUFLAG_SORTED - менюшка может быть отстортирована при вызове метода SORT родительской менюшки (только для дочерних менюшек - parentid<>0) 
  • MSG -код сообщения которое будет приходить плагину при клике на менюшку. Использовать значения от $850 до $A00 
  • TXT -текст менюшки
  • REFRESH -добавляет или обновляет менюшку. Для созданию меню необходимо вручную установить все ее поля, ID установить в 0 и вызвать REFRESH. Затем не меняя ID можно менять менюшку путем вызова REFRESH 
  • DELETE -удаляет менюшку из списка менюшек и устанавливает ее ID в 0
  • SPLIT -разбивает все дочерние подменюшки данной менюшки так чтобы они поместились на экране. Актуально когда их много (больше 20 штук

type TNVLIST=class (TOBJECT)
private
ID,NEXTID:integer;
lname,ltheme:string;
public
procedure GETBYTEXT(txt:string;flags:integer);
procedure GETLIST(xid:integer;flags:integer);
procedure SETLIST;
procedure DELLIST;
published
constructor CREATE;
end;

 

type TNVLINE=class (TOBJECT)
private
INDEX,COUNT:integer;
nodes,color,flags,width:integer;
ltype,llength,lspeed,lnote,lmap:string;
x,y:array[1..32]of integer;
public
procedure GETLINE(xindex:integer);
procedure SETLINE;
procedure DELLINE;
published
constructor CREATE;
end;

С последними двумя разберетесь по аналогии с TNVHOST ;). Советую глянуть хелп по плагинам NetView для ознакомления с тем откуда это все взялось и как работает.

 


© 2001-2004 Killer{R}   © 2003 VoVaN