Теперь посмотрим, как использовать функции для работы с открытыми ресурсами. При старте программы нужно определить используемую ОС и в зависимости от этого загружать нужную библиотеку. Пример осуществления этих операций приведен листинге 5.15.

Листинг 5.15. Определение ОС и загрузка библиотеки

procedure TForml.FormShowCSender: TObject): var
ver: TOSVersionInfo: begin
ver.dwOSVersionlnfoSize := SizeOf(TOSVersionlnfo). GetVersionEx(Ver). case Ver.dwPlatformld of VER_PLATF0RM_WIN32_NT: bNT -= True: VER_PLATF0RM_WIN32_WIND0WS. bNT := False. VER_PLATF0RM_WIN32s: bNT .= False
end:
if bNT then
fHandleNT := LoadLibraryCNETAPI32.DLL') else
fHandle9x := LoadLibrary('SVRAPI.DLL'): end.

Для определения ОС применяется функция GetVersionEx. Ей нужно передать структуру тина TOSVersionlnfo, у которой заполнено только одно поле - dwOSVersionln-foSize, и размер самой структуры. После выполнения функции в поче dwPlatformld будет одна из трех констант:

• VER_PLATF0RM_WIN32_NT - это NT-платформа (Windows NT, 2000, ХР, 2003). Переменной bNT присваиваем true;
• VER_PLATF0RM_WIN32_WIND0WS - это 9х-платформа. Переменной bNT присваиваем false;

• VER_PLATF0RM_WIN32s - это Windows 3.1 с 32-битной надстройкой. В этой версии функции не тестировались. По идее, таких функций там просто нет и мы должны выйти из программы, но я не думаю, что у кого-то сохранилась эта ОС. Переменной bNT присваиваем false

Переменная bNT - это переменная типа Boolean, которая объявляется в разделе private нашей формы. Она необходима для того, чтобы в любой момент узнать, какая версия Windows используется.

Теперь, если переменная bNT имеет значение true, то загружаем библиотеку NetAPI32.dll:

fHandleNT := LoadLi brary(1NETAPI32.DLL") Иначе загружается библиотека Svrapi.dll: fHandle9x := LoadLibraryCSVRAPI.DLL');

Переменные fHandleNT и fHandle9x должны быть объявлены в разделе private главной формы и иметь тип THandle.

Конечно же, можно было бы обойтись и без переменной bNT, а просто загружать нужную библиотеку в зависимости от определенной версии ОС. Для определения версии достаточно было бы проверить на правильность указатели в неременных fHandleNT и fHandle9x. Если переменная fHandleNT содержит нулевой указатель, то это Windows 9х, и наоборот.

5.8. Открытые папки || Оглавление || 5.8.2. Как открыть доступ к папке


Delphi в шутку и всерьез: что умеют хакеры



Новости за месяц

  • Декабрь
    2021
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31