Dienstag, 21.05.2019 (CEST) um 09:03 Uhr
- Webseite von Elmar Herzog (Software & Support)
Programme - .NET Framework Version (32-Bit; API)

Download:

Beschreibung:

".NET Framework Version 32-Bit" (DotNetVer32) ist eine DLL (Dynamic Link Library) - auch als Programmbibliothek bezeichnet - welche die installierten .NET Frameworkversionen auf dem aktuellen Rechner ermittelt und in einem Speicherblock zur Verfügung stellt. Die bereitsgestellten Daten können vom Entwickler nun entsprechend weiter verarbeitet werden.

Das Programm ".NET Framework Versionsanzeige" zeigt die installierten Versionen dem Benutzer an und verwendet dabei die von der DLL bereitgestellten Funktionen.

Folgende Funktionen werden bereitgestellt (nähere Informationen in der Hilfe):

Vorteile:

FAQ:

  1. Wie kann ich die Funktionen in mein Delphi-Programm einbinden?
    Sie haben zwei Lösungswege: Verwenden Sie die Unit "DotNetVer.pas" oder importieren Sie die DLL-Funktionen selbst in Ihrem Programm. Z.B.: function QueryDotNetVersionW(lpDotNetVersion: LPDOTNET_VERSION_INFOW; dwDotNetVersionSize: DWORD; dwReturnLength: PDWORD): DWORD; stdcall; external 'dotnetver.dll';

  2. Ich erhalte beim Programmstart eine Fehlermeldung, dass die "DotNetVer.dll" nicht vorhanden ist. Was muss ich tun?
    Sie müssen die DLL-Datei (dotnetver.dll) entwender im selben Verzeichnis wie das Anwendungsprogramm ablegen oder die DLL in das System- bzw. System32-Verzeichnis kopieren.

  3. Läuft das Programm ohne der DLL auf einem anderen Rechner?
    Nein, Sie müssen die DLL (dotnetver.dll) mit dem Programm weitergeben.

Delphi-Beispiel:

unit TestWinEx;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, 
  Forms, Dialogs, StdCtrls DotNetVer;

type
  TForm = class(TForm)
    Button: TButton;
    procedure ButtonClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
  { Public-Deklarationen }
  end;

var
  Form: TForm;

implementation

{$R *.DFM}

procedure TForm.ButtonClick(Sender: TObject);
const
  BUF_SIZE = 512;
var
  FBufSize: Cardinal;
  FBuffer: Pointer;
  FStatus: Cardinal;
  FNextEntry: Boolean;
  FDotNetVersion: LPDOTNET_VERSION_INFO;
begin
  FBufSize := BUF_SIZE;
  repeat
    GetMem(FBuffer, FBufSize);

    FStatus := QueryDotNetVersion(FBuffer, FBufSize, nil);

    if (FStatus = ERROR_MORE_DATA) then
    begin
      FreeMem(FBuffer);
      Inc(FBufSize, BUF_SIZE);
    end;

  until (FStatus <> ERROR_MORE_DATA);

  if (FStatus = ERROR_SUCCESS) then
  begin
    FNextEntry := True;
    FDotNetVersion := FBuffer;

    while FNextEntry do
    begin
      if (FDotNetVersion^.dwNextEntryOffset = 0) then FNextEntry := False;

      // Hier der weitere Bearbeitungscode (Beispiel)
      if (FDotNetVersion^.dwMajorVersion > 3) then
        MessageBox(Handle, '.NET Framework 4 oder höher installiert.', 'Info', MB_OK or MB_ICONINFORMATION);
      // (Ende Beispiel)

      FDotNetVersion := Pointer(Longword(FDotNetVersion) + FDotNetVersion^.dwNextEntryOffset);
    end;
  end;

  FreeMem(FBuffer);
end;

end.