home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / tpw / owldemos / sysinfo.pas < prev    next >
Pascal/Delphi Source File  |  1991-05-20  |  4KB  |  144 lines

  1. {************************************************}
  2. {                                                }
  3. {   Turbo Pascal for Windows                     }
  4. {   Demo program                                 }
  5. {   Copyright (c) 1991 by Borland International  }
  6. {                                                }
  7. {************************************************}
  8.  
  9. program SysInfo;
  10.  
  11. {$R SysInfo.res}
  12.  
  13. uses Wobjects, WinProcs, WinTypes, Strings, WinDos;
  14.  
  15. type
  16.   TSysInfoApp = object(TApplication)
  17.     procedure InitMainWindow; virtual;
  18.   end;
  19.  
  20. type
  21.   SysInfoRecord = record
  22.     InstanceNumber: Array[0..30] of Char;
  23.     WindowsVersion: Array[0..30] of Char;
  24.     OperationMode: Array[0..30] of Char;
  25.     CPUType: Array[0..30] of Char;
  26.     CoProcessor: Array[0..30] of Char;
  27.     Global: Array[0..30] of Char;
  28.     VersionDos: Array[0..30] of Char;
  29.   end;
  30.  
  31.   PSysInfoWindow = ^TSysInfoWindow;
  32.   TSysInfoWindow = object(TDlgWindow)
  33.     TransferRecord: SysInfoRecord;
  34.     constructor Init(aParent: PWindowsObject; aTitle: PChar);
  35.     procedure GetSysInformation;
  36.     procedure InitChildren;
  37.   end;
  38.  
  39. const
  40.   EnhancedID =  0;
  41.   StandardID =  1;
  42.   RealID     =  2;
  43.   CPU8086ID  =  3;
  44.   CPU80186ID =  4;
  45.   CPU80286ID =  5;
  46.   CPU80386ID =  6;
  47.   CPU80486ID =  7;
  48.   YesID      =  8;
  49.   NoID       =  9;
  50.   UnknownID  = 10;
  51.  
  52. constructor TSysInfoWindow.Init(aParent: PWindowsObject; aTitle: PChar);
  53. begin
  54.   TDlgWindow.Init(aParent, aTitle);
  55.   InitChildren;
  56.   GetSysInformation;
  57. end;
  58.  
  59. procedure TSysInfoWindow.InitChildren;
  60. var
  61.   s: PStatic;
  62. begin
  63.   new(s, InitResource(@Self, 200, SizeOf(TransferRecord.InstanceNumber)));
  64.   new(s, InitResource(@Self, 201, SizeOf(TransferRecord.WindowsVersion)));
  65.   new(s, InitResource(@Self, 202, SizeOf(TransferRecord.OperationMode)));
  66.   new(s, InitResource(@Self, 203, SizeOf(TransferRecord.CPUType)));
  67.   new(s, InitResource(@Self, 204, SizeOf(TransferRecord.CoProcessor)));
  68.   new(s, InitResource(@Self, 205, SizeOf(TransferRecord.Global)));
  69.   new(s, InitResource(@Self, 206, SizeOf(TransferRecord.VersionDos)));
  70. end;
  71.  
  72. procedure TSysInfoWindow.GetSysInformation;
  73. var
  74.   SysFlags: word;
  75.   Str: array[0..40] of char;
  76.   Ver: integer;
  77.   ArgList: array[0..1] of word;
  78.   Available: Longint;
  79. begin
  80.   SysFlags := GetWinFlags;
  81.  
  82.   ArgList[0] := GetModuleUsage(HInstance);
  83.   wvSprintf(TransferRecord.InstanceNumber, '%d', ArgList);
  84.  
  85.   Ver := GetVersion;
  86.   ArgList[0] := LoWord(Ver);
  87.   ArgList[1] := HiWord(Ver);
  88.   wvSprintf(TransferRecord.WindowsVersion, '%d.%d', ArgList);
  89.   if WordBool(SysFlags and WF_ENHANCED) then
  90.     LoadString(HInstance, EnhancedID, Str, Sizeof(Str))
  91.   else if WordBool(SysFlags and WF_STANDARD) then
  92.     LoadString(HInstance, StandardID, Str, Sizeof(Str))
  93.   else if WordBool(SysFlags and WF_PMODE) then
  94.     LoadString(HInstance, RealID, Str, Sizeof(Str))
  95.   else LoadString(HInstance, UnknownID, Str, Sizeof(Str));
  96.  
  97.   StrCopy(TransferRecord.OperationMode, Str);
  98.  
  99.   if WordBool(SysFlags and WF_CPU086) then
  100.     LoadString(HInstance, CPU8086ID, Str, Sizeof(Str))
  101.   else if WordBool(SysFlags and WF_CPU186) then
  102.     LoadString(HInstance, CPU80186ID, Str, Sizeof(Str))
  103.   else if WordBool(SysFlags and WF_CPU286) then
  104.     LoadString(HInstance, CPU80286ID, Str, Sizeof(Str))
  105.   else if WordBool(SysFlags and WF_CPU386) then
  106.     LoadString(HInstance, CPU80386ID, Str, Sizeof(Str))
  107.   else if WordBool(SysFlags and WF_CPU486) then
  108.     LoadString(HInstance, CPU80486ID, Str, Sizeof(Str))
  109.   else LoadString(HInstance, UnknownID, Str, Sizeof(Str));
  110.  
  111.   StrCopy(TransferRecord.CPUType, Str);
  112.  
  113.   if WordBool(SysFlags and WF_80x87) then
  114.     LoadString(HInstance, YesID, Str, Sizeof(Str))
  115.   else
  116.     LoadString(HInstance, NoID, Str, Sizeof(Str));
  117.  
  118.   StrCopy(TransferRecord.Coprocessor, Str);
  119.  
  120.   Available := GetFreeSpace(0) div 1024;
  121.   ArgList[0] := LoWord(Available);
  122.   ArgList[1] := HiWord(Available);
  123.   wvsprintf(TransferRecord.Global, '%luK', ArgList);
  124.  
  125.   Ver := DosVersion;
  126.   ArgList[0] := Lo(Ver);
  127.   ArgList[1] := Hi(Ver);
  128.   wvsprintf(TransferRecord.VersionDos, '%d.%d', ArgList);
  129.   TransferBuffer := @TransferRecord;
  130. end;
  131.  
  132. procedure TSysInfoApp.InitMainWindow;
  133. begin
  134.   MainWindow := new(PSysInfoWindow,Init(nil,MakeIntResource(100)));
  135. end;
  136.  
  137. var
  138.   SysInfoApp: TSysInfoApp;
  139. begin
  140.   SysInfoApp.Init('SysInfo');
  141.   SysInfoApp.Run;
  142.   SysInfoApp.Done;
  143. end.
  144.