DllGetVersion
ŁF
// C
HRESULT CALLBACK DllGetVersion(
DLLVERSIONINFO *pdvi
);
// Delphi
function (var pdvi: TDllVersionInfo): HRESULT; stdcall;
Funkcja DllGetVersion
zwraca wersję biblioteki.
Parametry:
pdvi
Wskaźnik do struktury DLLVERSIONINFO (dla starszych niż 5.0 wersji bibliotek) lub DLLVERSIONINFO2 (wersje 5.0 i nowsze, dostarczane razem z systemem Windows 2000 i nowszymi). Pole cbSize tej struktury musi zawierać rozmiar całej struktury (jeśli używasz struktury DLLVERSIONINFO2, pole cbSize musi zawierać jej rozmiar (a nie DLLVERSIONINFO)).
Wartość zwracana
Funkcja zwraca wartość NOERROR
gdy się powiedzie; w przeciwnym wypadku zwracany jest błąd OLE.
Uwagi
Funkcja ta powinna być zaimplementowana w każdym pliku dll, jednak może się zdarzyć, że tak nie będzie. Należy się przed tym zabezpieczyć (np. sprawdzić wynik wywołania funkcji GetProcAddress).
Wersja systemu operacyjnego
Windows 98, Windows 2000
Dla wcześniejszych systemów konieczne jest doinstalowanie Internet Explorera w wersji co najmniej 4.0
Przykład:
Funkcja zwraca wersję biblioteki.
// Delphi
function DllGetVersion(const FileName: String): DWORD;
type
TDllVersionInfo = record
cbSize: DWORD;
dwMajorVersion: DWORD;
dwMinorVersion: DWORD;
dwBuildNumber: DWORD;
dwPlatformID: DWORD;
end;
TDllVersionInfo2 = record
info1: TDllVersionInfo;
dwFlags: DWORD;
wMajorVersion,
wMinorVersion,
wBuildNumber,
wQualityFixedEnviron: WORD;
end;
var
h: THandle;
p: function (var pdvi: TDllVersionInfo): HRESULT; stdcall;
v: TDllVersionInfo;
begin
Result := 0;
h := SafeLoadLibrary(PChar(FileName));
if h<>0 then
try
p := GetProcAddress(h, 'DllGetVersion');
if Assigned(p) then
begin
FillChar(v, SizeOf(TDllVersionInfo), 0);
v.cbSize := SizeOf(TDllVersionInfo);
if Succeeded(p(v)) then
Result := MakeLong(v.dwMinorVersion, v.dwMajorVersion);
end;
finally
FreeLibrary(h);
end;
end;
// kod pobrany ze strony http://www.moonlight.gr.jp/~el/delphi/lib/LxTrayIcon.pas
Zobacz też: