Show list of installed programs
Use SHGetSpecialFolderLocation for getting identifier of special folder. After that, you must fill components of ShellExecuteInfo structure where one of the parameters is the identifier of special folder. Folder variable contains a constant, which shows special folder. For example: CSIDL_DRIVES - My Computer SIDL_CONTROLS - Control Panel CSIDL_DESKTOP - Desctop CSIDL_BITBUCKET - Recycle Bin
uses ShlObj, ShellAPI; ... procedure TForm1.Button1Click(Sender: TObject); var MyItemIDList: PItemIDList; MyShellEx: TShellExecuteInfo; Folder: Integer; begin Folder:=CSIDL_DRIVES; SHGetSpecialFolderLocation(Form1.Handle, Folder, MyItemIDList); with MyShellEx do begin cbSize:=Sizeof(MyShellEx); fMask:=SEE_MASK_IDLIST; Wnd:=Handle; lpVerb:=nil; lpFile:=nil; lpParameters:=nil; lpDirectory:=nil; nShow:=SW_SHOWNORMAL; hInstApp:=0; lpIDList:=MyItemIDList; end; ShellExecuteEx(@MyShellEx); end;