home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 9 / 09.iso / l / l040 / 11.ddi / OWLDEMOS.ZIP / SYSINFO.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1992-10-27  |  4.3 KB  |  143 lines

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