home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / Pascal / Applications / MakeFat 1.0 / PNL Libraries / MySystemGlobals.p < prev    next >
Encoding:
Text File  |  1995-11-24  |  2.7 KB  |  96 lines  |  [TEXT/CWIE]

  1.  
  2. unit MySystemGlobals;
  3.  
  4. interface
  5.  
  6.     uses
  7.         Quickdraw, Files;
  8.  
  9.     var  { set up by InitSystemGlobals }
  10.         system7: boolean;
  11.         system_version: longint;
  12.         has_appleEvents: boolean;
  13.         has_findfolder: boolean;
  14.         has_aliasMgr: boolean;
  15.         has_newStdFile: boolean;
  16.         has_HelpMgr: boolean;
  17.         has_colorQD: boolean;
  18.         has_LaunchControl: Boolean;
  19.         has_VirtualMemory: Boolean;
  20.         app_resfile: integer;
  21.         app_fs: FSSpec;
  22.         in_foreground: boolean;
  23.  
  24.     procedure InitSystemGlobals;
  25.     function RefNumToFSSpec(rn:integer; var fs:FSSpec):OSErr;
  26.     procedure SetInForeground (fore: boolean);
  27.     function InForeground: boolean;
  28.     
  29. implementation
  30.  
  31.     uses
  32.         Resources, GestaltEqu, Processes;
  33.         
  34.     function TPbtst(value:longint; bit:integer):Boolean;
  35.     begin
  36.         TPbtst := btst(value, bit);
  37.     end;
  38.     
  39.     procedure SetInForeground (fore: boolean);
  40.     begin
  41.         in_foreground := fore;
  42.     end;
  43.  
  44.     function InForeground: boolean;
  45.         var
  46.             gv: longint;
  47.             ourpsn, frontpsn: ProcessSerialNumber;
  48.             front: boolean;
  49.     begin
  50.         if (Gestalt(gestaltOSAttr, gv) = noErr) & (TPbtst(gv, gestaltLaunchControl)) then begin
  51.             if (GetCurrentProcess(ourpsn) = noErr) & (GetFrontProcess(frontpsn) = noErr) then begin
  52.                 if SameProcess(ourpsn, frontpsn, front) = noErr then begin
  53.                     in_foreground := front;
  54.                 end;
  55.             end;
  56.         end;
  57.         InForeground := in_foreground;
  58.     end;
  59.  
  60.     function RefNumToFSSpec(rn:integer; var fs:FSSpec):OSErr;
  61.         var
  62.             pb: FCBPBRec;
  63.     begin
  64.         pb.ioNamePtr := @fs.name;
  65.         pb.ioVRefNum := 0;
  66.         pb.ioRefNum := rn;
  67.         pb.ioFCBIndx := 0;
  68.         RefNumToFSSpec := PBGetFCBInfoSync(@pb);
  69.         fs.vRefNum := pb.ioFCBVRefNum;
  70.         fs.parID := pb.ioFCBParID;
  71.     end;
  72.     
  73.     procedure InitSystemGlobals;
  74.         var
  75.             oe: OSErr;
  76.             gv: longint;
  77.             sysenv: sysEnvRec;
  78.     begin
  79.         app_resfile := CurResFile;
  80.         oe := RefNumToFSSpec(app_resfile, app_fs);
  81.         has_colorqd := (SysEnvirons(1, sysEnv) = noErr) & sysenv.hasColorQD; { Gestalt has a bug that causes hasColourQD to always be set }
  82.         if (Gestalt(gestaltSystemVersion, system_version) <> noErr) then begin
  83.             system_version := $0600;
  84.         end;
  85.         system7 := system_version >= $0700;
  86.         has_AppleEvents := (Gestalt(gestaltAppleEventsAttr, gv) = noErr) & (TPbtst(gv, gestaltAppleEventsPresent));
  87.         has_findfolder := (Gestalt(gestaltFindFolderAttr, gv) = noErr) & (TPbtst(gv, gestaltFindFolderPresent));
  88.         has_newStdFile := (Gestalt(gestaltStandardFileAttr, gv) = noErr) & (TPbtst(gv, gestaltStandardFile58));
  89.         has_HelpMgr := (Gestalt(gestaltHelpMgrAttr, gv) = noErr) & (TPbtst(gv, gestaltHelpMgrPresent));
  90.         has_aliasMgr := (Gestalt(gestaltAliasMgrAttr, gv) = noErr) & (TPbtst(gv, gestaltAliasMgrPresent));
  91.         has_LaunchControl := (Gestalt(gestaltOSAttr, gv) = noErr) & (TPbtst(gv, gestaltLaunchControl));
  92.         has_VirtualMemory := (Gestalt(gestaltVMAttr, gv) = noErr) & (TPbtst(gv, gestaltVMPresent));
  93.         in_foreground := true;
  94.     end;
  95.  
  96. end.