Пятница, 26.04.2024, 14:32
Приветствую Вас Гость | RSS

DELPHI Report

Каталог статей Delphi Report

Главная » Статьи » - Delphi DLL

Определение версии системных DLL

Code:


>> Определение версии системных DLL

 

Функция предназначена для определение версии системных DLL. Кодирование версии осуществляется вспомогательной функцией MakeVersion (см. код).

 

Зависимости: Windows

Автор:       Almaz, az_spb@mail.ru, Санкт-Петербург

Copyright:   Собственное написание Almaz

Дата:        12 мая 2002 г.

********************************************** }

 

function MakeVersion(Major, Minor: Word): Integer; // Функция кодирование версии

begin

Result := MAKELONG(Minor, Major);

end;

 

function GetDllVersion(FileName: PChar): Integer;

type

TDllVersionInfo = packed record

   cbSize: DWORD;

   dwMajorVersion: DWORD;

   dwMinorVersion: DWORD;

   dwBuildNumber: DWORD;

   dwPlatformID: DWORD;

end;

PDllVersionInfo = ^TDllVersionInfo;

 

var

Lib: THandle;

DllGetVersion: function (Info: PDllVersionInfo): HRESULT; stdcall;

Info: TDllVersionInfo;

WasLoaded: Boolean;

begin

Result := 0;

try

   // Получение ссылки на DLL, если она уже загружена

   Lib := GetModuleHandle(FileName);

   if Lib = 0 then

   begin

     // Загрузка DLL, если она еще не загружена

     Lib := LoadLibrary('SHELL32.DLL');

     WasLoaded := True;

   end else WasLoaded := False;

   if Lib <> 0 then

   try

     // Получение адреса функции DllGetVersion

     DllGetVersion := GetProcAddress(Lib, 'DllGetVersion');

     if Assigned(DllGetVersion) then

     begin

       // Подготовка структуры для функции

       ZeroMemory(@Info, SizeOf(Info));

       Info.cbSize := SizeOf(Info);

       // Вызов функции DllGetVersion

       if DllGetVersion(@Info) = NOERROR then

         Result := MakeVersion(Info.dwMajorVersion, Info.dwMinorVersion);

     end;

   finally

     // Если DLL была загружена этой функцией - то выгружаем

     if WasLoaded then FreeLibrary(Lib);

   end;

except

end;

end;

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

Code:

// Закодированные MakeVersion версии можно просто сравнивать

if GetDLLVersion('SHELL32.DLL') > MakeVersion(5, 0) then

...

 

// Вот так можно вывести версию DLL

 

var

V: Integer;

begin

V := GetDLLVersion('SHLDOC32.DLL');

ShowMessage(IntToStr(HIWORD(V)) + '.' + IntToStr(LOWORD(V)));

end;

 

 

Категория: - Delphi DLL | Добавил: delphi (31.01.2009)
Просмотров: 2122 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Меню сайта
Google
Форма входа
Категории раздела
Общие вопросы [3] Среда Delphi [1]
Создание отчетов. Rave Reports [6] - Delphi DLL [9]
- Работа с реестром [5] Внешний вид программы [9]
Прикладные программы [1]
Здесь будут размещаться программы, файлы и по возможности описание программ прикладного характера
MS Office (MS Word, MS Excel ) [40]
Aвтоматизация отчетов с помощью средств MS Office (Word, Excel)
Построение графиков TChart, TDBChar [10] Matlab [3]
Здесь будут представлены примеры и статьи решения математических задач в среде матричных вычислений Matlab
Поиск
Друзья сайта
Статистика
Copyright MyCorp © 2024