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);
沒有留言:
張貼留言