Lib.Load

From SunFlurry wiki
Jump to: navigation, search
  Load (Загрузка библиотеки)
Объект:Библиотека
Статус разработки: Реализована
Тип:Функция
Обращение к БД:Нет
Исключения:Невозможно превратить в строку, файл библиотеки не найден
Визуальность:Нет

Функция производит попытку загрузки указанной библиотеки в память. Если путь не указан, операционная система ищет файл библиотеки в стандартных папках, заданных в переменных окружения. Если для загрузки библиотеки требуется загрузить еще какую-либо промежуточную библиотеку, последняя должна также находиться по указанному пути (либо быть доступна в окружении). В момент загрузки клиент временно меняет текущую директорию в соответствии с путем загрузки, чтобы предусмотреть такие случаи. Если библиотека (или связанные с ней библиотеки) не найдена, функция вызовет исключение. Клиент автоматически вызовет функцию отмены загрузки библиотеки, когда объект будет удален из системы. Функция не принимает серверного пути для загрузки. Если необходимо использовать файл, находящийся на сервере, его необходимо сначала скопировать на локальный компьютер (к примеру, во временную папку).

Синтаксис

Lib.Load(<Путь и имя библиотеки (STRING)>):<Новый объект (LIB)>

Аргументы

  • <Путь и имя библиотеки (STRING)> - Путь и имя или просто имя библиотеки. Серверные пути не допускаются. Если путь не указан, операционная система попытается найти библиотеку самостоятельно. Примеры: "advapi32.dll", "C:\Sound\vorbis.dll".

Возвращаемое значение

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

Примеры

Function ПолучитьСтрокуЗначенияРеестра(Раздел,Путь,Значение)
  aAdvapi32:=Lib.Load("advapi32.dll");
  aAdvapi32.RegisterFunction("RegOpenKeyW:RegOpenKey","stdcall","UN,^SZW,@UN","I32");
  aAdvapi32.RegisterFunction("RegQueryValueExW:RegQueryValueEx","stdcall","UN,^SZW,@UI32,@UI32,P,@UI32","I32");
  aAdvapi32.RegisterFunction("RegCloseKey","stdcall","UN","I32");
  ERROR_SUCCESS:=0;
  
  аКлюч:=0;
  If aAdvapi32.RegOpenKey(Раздел,Путь,аКлюч)<>ERROR_SUCCESS Then
    Exit "";
  EndIf;
  Try
    ТипЗнач:=0;
    Размер:=1024;
    rData:=MemoryRecord.Create("szData:SZW"+Размер);
    rData.Allocate();
    If aAdvapi32.RegQueryValueEx(аКлюч,Значение,,ТипЗнач,rData,Размер)<>ERROR_SUCCESS Then
      Exit "";
    EndIf;
  Finally
    aAdvapi32.RegCloseKey(аКлюч);
  EndTry;
  Exit rData.szData;
EndFunction

HKEY_CLASSES_ROOT:=$80000000;
HKEY_CURRENT_USER:=$80000001;
HKEY_LOCAL_MACHINE:=$80000002;
HKEY_USERS:=$80000003;
HKEY_PERFORMANCE_DATA:=$80000004;
HKEY_CURRENT_CONFIG:=$80000005;
HKEY_DYN_DATA:=$80000006;
Стр:=ПолучитьСтрокуЗначенияРеестра(HKEY_LOCAL_MACHINE,"HARDWARE\DESCRIPTION\System\BIOS","BaseBoardProduct");

Message("Результат чтения наименования версии материнской платы: "+Стр);