HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MediaPlayer\Setup\Installed Versions
function GetWMPlayerVersion(out Major, Minor, Revision, Build: Word): boolean;
var
Reg: TRegistry;
Version: array [0..1] of Cardinal;
begin
Result := False;
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
if Reg.OpenKey('\SOFTWARE\Microsoft\MediaPlayer\Setup\Installed Versions', False) then
begin
Result := Reg.ReadBinaryData('wmplayer.exe', Version, SizeOf(Version)) = SizeOf(Version);
Major := HiWord(Version[0]); // Hauptversion (Major)
Minor := LoWord(Version[0]); // Nebenversion (Minor)
Revision := HiWord(Version[1]); // Ausgabeversion (Revision)
Build := LoWord(Version[1]); // Buildnummer (Build)
Reg.CloseKey;
end;
finally
Reg.Free;
end;
end;
procedure TFormX.ButtonDingsClick(Sender: TObject);
var hv, sv, sv2, bv: word;
begin
if GetWMPlayerVersion(hv, sv, sv2, bv)
then Label1.Caption := format('Mediaplayer Version: %d.%d.%d Build %d', [hv, sv, sv2, bv])
else Label1.Caption := format('Mediaplayer Version: %s', ['konnte nicht ermittelt werden.']);
end;
另外的參考
function GetFileVersion(Datei : TFileName) : String;
//Ermittelt die Programmversion
var
VerInfoSize, VerValueSize, Dummy : DWord;
VerInfo : Pointer;
VerValue : PVSFixedFileInfo;
begin
VerInfoSize := GetFileVersionInfoSize (PChar (Datei), Dummy);
//Speicher anfordern
GetMem (VerInfo, VerInfoSize);
//Versionsinformationen der Datei abfragen
GetFileVersionInfo (PChar (Datei), 0, VerInfoSize, VerInfo);
VerQueryValue (VerInfo, '\', Pointer (VerValue), VerValueSize);
with VerValue^ do
begin
//Einzellne Versionsschritte zusammenfassen
result := IntTostr (dwFileVersionMS shr 16);
result := result + '.' + IntTostr (dwFileVersionMS and $FFFF);
result := result + '.' + IntTostr (dwFileVersionLS shr 16);
result := result + '.' + IntTostr (dwFileVersionLS and $FFFF);
end; {with - VerValue^}
//Speicher Freigeben
FreeMem (VerInfo, VerInfoSize);
end;
GetFileVersion(Dateiname);
沒有留言:
張貼留言