Home Artikel Delphi Artikel Using DllGetVersion to Determine the Version Number

Using DllGetVersion to Determine the Version Number

Delphi Artikel

This article describes how to determine the version of the running Windows Shell or common controls DLLs (Comctl32.dll, Shell32.dll, and Shlwapi.dll). The function GetDllVersion calls the exported DllGetVersion and is a Delphi translation of the example on MSDN (see Shell and Common Controls Versions ).
 
const
  ComCtlVersionWin2k = $00050051;  // 5.81, Windows 2000 and Windows Me
  ComCtlVersionWinXP_Classic = $00050052;  // 5.82, Windows XP classic mode
  ComCtlVersionWinXP = $00060000;  // 6.0, Windows XP
 
type
  pDLLVERSIONINFO = ^DLLVERSIONINFO;
  DLLVERSIONINFO = packed record
    cbSize: DWORD;
    dwMajorVersion: DWORD;
    dwMinorVersion: DWORD;
    dwBuildNumber: DWORD;
    dwPlatformID: DWORD;
  end;
 
  DLLGETVERSIONPROC = function(pdvi: pDLLVERSIONINFO): HRESULT stdcall;
 
function GetDllVersion(szDllName: PChar): Cardinal;
var
  hinstDll: HINST;
  dwVersion: DWORD;
  hr: HRESULT;
  DllGetVersion: DLLGETVERSIONPROC;
  dvi: DLLVERSIONINFO;
begin
  dwVersion := 0;
 
  (* For security purposes, LoadLibrary should be provided with a
     fully-qualified path to the DLL. The lpszDllName variable should be
     tested to ensure that it is a fully qualified path before it is used. *)
  hinstDll := LoadLibrary(szDllName);
 
  if (hinstDll > 0) then
  begin
    @DllGetVersion := GetProcAddress(hinstDll, 'DllGetVersion');
 
    (* Because some DLLs might not implement this function, you
    must test for it explicitly. Depending on the particular
    DLL, the lack of a DllGetVersion function can be a useful
    indicator of the version. *)
 
    if Assigned(DllGetVersion) then
    begin
      ZeroMemory(@dvi, sizeof(dvi));
      dvi.cbSize := sizeof(dvi);
      hr := DllGetVersion(@dvi);
      if Succeeded(hr)
        then dwVersion := MakeLong(dvi.dwMinorVersion, dvi.dwMajorVersion);
    end;
 
    FreeLibrary(hinstDll);
  end;
  Result := dwVersion;
end;
 
  • Google Bookmarks
  • Twitter
  • Facebook
  • VZ
  • MySpace
  • deli.cio.us
  • Digg
  • Linkarena
  • Mister Wong
  • reddit
  • StumbleUpon
  • Yahoo! Bookmarks
  • Yigg
130.000 RidNacs Downloads
Seit der Erstveröffentlichung wurde RidNacs mehr als 130.000 mal direkt von splashsoft.de heruntergeladen.
 
RidNacs bei Chip Online
RidNacs wurde im Downloadbereich von Chip Online aufgenommen.
Weiterlesen...
 
Softpedia zertifiziert RidNacs
RidNacs 2.0 wurde von Softpedia als 100% CLEAN zertifiziert
Weiterlesen...
 
RidNacs 2.0 verfügbar
Ziemlich genau ein Jahr nach Veröffentlichung von RidNacs 1.0 ist nun die Version 2.0 fertig.
Weiterlesen...
 
RidNacs 1.0.2 veröffentlicht
Diese Version behebt einige kleine Fehler in der Vorgängerversion.
 
© 2014 Stephan Plath - Impressum