home *** CD-ROM | disk | FTP | other *** search
/ Softwarová Záchrana 3 / Softwarova-zachrana-3.bin / StartRight / source.zip / UnitSpecialPaths.pas < prev    next >
Pascal/Delphi Source File  |  2003-11-14  |  2KB  |  67 lines

  1. unit UnitSpecialPaths;
  2. {
  3.     Purpose:
  4.         Return the paths to special folders used throught the program
  5.  
  6.     Updates:
  7.         Win9x compatibility added for GetCommonStartupPath
  8. }
  9.  
  10. interface
  11.  
  12. type TSpecialPaths = class(TObject)
  13.     private
  14.         function GetPath(CLSIDL : word) : string;
  15.     public
  16.         function GetStartupPath : string;
  17.         function GetCommonStartupPath : string;
  18.         function GetAltStartupPath : string;
  19.         function GetStartRightStartup : string;
  20. end;
  21. var SpecialPaths : TSpecialPaths;
  22.  
  23. {////////////////////}
  24. {//}implementation{//}
  25. {////////////////////}
  26.  
  27. uses ShellAPI, ShlObj, Windows, Forms, SysUtils;
  28.  
  29. function TSpecialPaths.GetPath(CLSIDL : word) : string;
  30. var p : PItemIDList;
  31.     Path: array[0..MAX_PATH] of char;
  32. begin
  33.     SHGetSpecialFolderLocation(Application.Handle , CLSIDL, p);
  34.     SHGetPathFromIDList(p, path);
  35.     result := path;
  36. end;
  37.  
  38.  
  39. function TSpecialPaths.GetStartupPath : string;
  40. begin
  41.     result := self.GetPath(CSIDL_STARTUP);
  42. end;
  43.  
  44. function TSpecialPaths.GetCommonStartupPath : string;
  45. begin
  46.     result := self.GetPath(CSIDL_COMMON_STARTUP);
  47.  
  48.     // win9x compatibility
  49.     if (result = '') then begin
  50.         result := self.GetPath(CSIDL_STARTUP);
  51.     end;
  52. end;
  53.  
  54. function TSpecialPaths.GetAltStartupPath : string;
  55. begin
  56.     result := self.GetPath(CSIDL_ALTSTARTUP);
  57. end;
  58. function TSpecialPaths.GetStartRightStartup : string;
  59. begin
  60.     result := IncludeTrailingPathDelimiter(
  61.          ExtractFilePath(Application.ExeName)) + 'Startup\';
  62. end;
  63.  
  64. initialization
  65.     SpecialPaths := TSpecialPaths.Create;
  66. end.
  67.