
A mellékelt példaprogram megnyitása előtt az InstalledProgram.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
Mivel a szükséges információ a Windows regisztrációs adatbázisában lett eltárolva, így komponensünknek sincs más tennivalója, mint onnan kiolvasni ezt.
Létrehozunk a komponensbe egy Programs nevű TStringList típusú property-t. Ezen keresztül lehet majd kiolvasni a rendszerbe telepített programok neveit.
Ezt a listát a komponens létrejöttekor, annak konstruktorában töltjük fel.
constructor TInstalledProgram.Create(AOwner: TComponent);
...
reg:=TRegistry.Create;
list:=TStringList.Create;
with reg do begin
RootKey:=HKEY_LOCAL_MACHINE;
A telepített alkalmazások eltávolításukhoz tesznek egy bejegyzést a Software\Microsoft\Windows\CurrentVersion\Uninstall kulcs alá. Ebből megtudható, hogy milyen alkalmazások kerültek a gépre.
OpenKey('Software\Microsoft\Windows\CurrentVersion\Uninstall', false);
Lekérdezzük az itt található kulcsokat egy listába, majd egy ciklussal végigmegyünk ezen a listán.
GetKeyNames(list);
CloseKey;
for i:=0 to list.Count-1 do begin
A lista minden elemén lévő kulcsot megnyitjuk és onnan a DisplayName értéket kiolvassuk és ezt tároljuk a komponens Programs property-jébe. Ha nem lenne megadva a DisplayName értéke, akkor az adott szoftver kulcsának nevét írjuk be a listánkba.
OpenKey('Software\Microsoft\Windows\CurrentVersion\Uninstall\'+list[i], false);
s:=ReadString('DisplayName');
if s<>'' then begin
FPrograms.Add(ReadString('DisplayName'));
end else begin
FPrograms.Add(list[i]);
end;
CloseKey;
end;
end;
end;