home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 September / Chip_2001-09_cd1.bin / zkuste / delphi / kompon / d2345 / MSYSINFO.ZIP / Source / MSI_Printers.pas < prev    next >
Pascal/Delphi Source File  |  2001-06-21  |  2KB  |  102 lines

  1.  
  2. {*******************************************************}
  3. {                                                       }
  4. {       MiTeC System Information Component              }
  5. {               Printer Detection Part                  }
  6. {           version 5.6 for Delphi 3,4,5                }
  7. {                                                       }
  8. {       Copyright ⌐ 1997,2001 Michal Mutl               }
  9. {                                                       }
  10. {*******************************************************}
  11.  
  12. {$INCLUDE MITEC_DEF.INC}
  13.  
  14. unit MSI_Printers;
  15.  
  16. interface
  17.  
  18. uses
  19.   SysUtils, Windows, Classes;
  20.  
  21. type
  22.   TPrinters = class(TPersistent)
  23.   private
  24.     FPrinter: TStrings;
  25.     FDI: integer;
  26.     FPort: TStrings;
  27.   public
  28.     constructor Create;
  29.     destructor Destroy; override;
  30.     procedure GetInfo;
  31.     procedure Report(var sl :TStringList);
  32.   published
  33.     property DefaultIndex: integer read FDI write FDI;
  34.     property Names :TStrings read FPrinter write FPrinter stored false;
  35.     property Ports: TStrings read FPort Write FPort stored False;
  36.   end;
  37.  
  38. implementation
  39.  
  40. uses Printers, MiTeC_Routines;
  41.  
  42. { TPrinters }
  43.  
  44. constructor TPrinters.Create;
  45. begin
  46.   FPrinter:=TStringList.Create;
  47.   FPort:=TStringList.Create;
  48. end;
  49.  
  50. destructor TPrinters.Destroy;
  51. begin
  52.   FPrinter.Free;
  53.   FPort.Free;
  54.   inherited;
  55. end;
  56.  
  57. procedure TPrinters.GetInfo;
  58. var
  59.   i :integer;
  60.   Device, Driver, Port: PChar;
  61.   Mode: THandle;
  62. begin
  63.   try
  64.     Device:=AllocMem(CCHDEVICENAME);
  65.     Driver:=AllocMem(MAX_PATH);
  66.     Port:=AllocMem(MAX_PATH);
  67.     FPrinter.Clear;
  68.     FPort.Clear;
  69.     for i:=0 to Printer.Printers.count-1 do begin
  70.       Printer.PrinterIndex:=i;
  71.       Printer.GetPrinter(Device,Driver,Port,Mode);
  72.       FPrinter.Add(Device);
  73.       FPort.Add(Port);
  74.     end;
  75.     Printer.PrinterIndex:=-1;
  76.     Printer.GetPrinter(Device,Driver,Port,Mode);
  77.     FDI:=FPrinter.IndexOf(Device);
  78.     FreeMem(Device);
  79.     FreeMem(Port);
  80.     FreeMem(Driver);
  81.  
  82.   except
  83.     on e:Exception do begin
  84.       MessageBox(0,PChar(e.message),'TPrinters.GetInfo',MB_OK or MB_ICONERROR);
  85.     end;
  86.   end;
  87. end;
  88.  
  89. procedure TPrinters.Report(var sl: TStringList);
  90. var
  91.   i: integer;
  92. begin
  93.   with sl do begin
  94.     Add('[Printers]');
  95.     Add(Format('Count=%d',[Self.Names.Count]));
  96.     for i:=0 to Self.Names.Count-1 do
  97.       Add(Format('%s on %s=%d',[Self.Names[i],Self.Ports[i],integer(DefaultIndex=i)]));
  98.   end;
  99. end;
  100.  
  101. end.
  102.