home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 October / Chip_2001-10_cd1.bin / zkuste / delphi / kompon / d56 / MSYSINFO.ZIP / Source / MSI_Printers.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  2001-07-24  |  2.8 KB  |  118 lines

  1.  
  2. {*******************************************************}
  3. {                                                       }
  4. {       MiTeC System Information Component              }
  5. {               Printer Detection Part                  }
  6. {           version 6.0 for Delphi 5,6                  }
  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, FPort: TStringlist;
  25.     FDI: integer;
  26.     function GetPorts: TStrings;
  27.     function GetPrinters: TStrings;
  28.     procedure SetPorts(const Value: TStrings);
  29.     procedure SetPrinters(const Value: TStrings);
  30.   public
  31.     constructor Create;
  32.     destructor Destroy; override;
  33.     procedure GetInfo;
  34.     procedure Report(var sl :TStringList);
  35.   published
  36.     property DefaultIndex: integer read FDI {$IFNDEF D6PLUS} write FDI {$ENDIF} stored False;
  37.     property Names :TStrings read GetPrinters {$IFNDEF D6PLUS} write SetPrinters {$ENDIF} stored false;
  38.     property Ports: TStrings read GetPorts {$IFNDEF D6PLUS} write SetPorts {$ENDIF} stored False;
  39.   end;
  40.  
  41. implementation
  42.  
  43. uses Printers, MiTeC_Routines;
  44.  
  45. { TPrinters }
  46.  
  47. constructor TPrinters.Create;
  48. begin
  49.   FPort:=TStringList.Create;
  50.   FPrinter:=TStringList.Create;
  51. end;
  52.  
  53. destructor TPrinters.Destroy;
  54. begin
  55.   FPrinter.Free;
  56.   FPort.Free;
  57.   inherited;
  58. end;
  59.  
  60. procedure TPrinters.GetInfo;
  61. var
  62.   i :integer;
  63.   Device, Driver, Port: PChar;
  64.   Mode: THandle;
  65. begin
  66.   Device:=AllocMem(MAX_PATH);
  67.   Driver:=AllocMem(MAX_PATH);
  68.   Port:=AllocMem(MAX_PATH);
  69.   FPrinter.Clear;
  70.   FPort.Clear;
  71.   for i:=0 to Printer.Printers.count-1 do begin
  72.     Printer.PrinterIndex:=i;
  73.     Printer.GetPrinter(Device,Driver,Port,Mode);
  74.     FPrinter.Add(Device);
  75.     FPort.Add(Port);
  76.   end;
  77.   Printer.PrinterIndex:=-1;
  78.   Printer.GetPrinter(Device,Driver,Port,Mode);
  79.   FDI:=FPrinter.IndexOf(Device);
  80.   FreeMem(Device);
  81.   FreeMem(Port);
  82.   FreeMem(Driver);
  83. end;
  84.  
  85. function TPrinters.GetPorts: TStrings;
  86. begin
  87.   Result:=FPort;
  88. end;
  89.  
  90. function TPrinters.GetPrinters: TStrings;
  91. begin
  92.   Result:=FPrinter;
  93. end;
  94.  
  95. procedure TPrinters.Report(var sl: TStringList);
  96. var
  97.   i: integer;
  98. begin
  99.   with sl do begin
  100.     Add('[Printers]');
  101.     Add(Format('Count=%d',[Self.Names.Count]));
  102.     for i:=0 to Self.Names.Count-1 do
  103.       Add(Format('%s on %s=%d',[Self.Names[i],Self.Ports[i],integer(DefaultIndex=i)]));
  104.   end;
  105. end;
  106.  
  107. procedure TPrinters.SetPorts(const Value: TStrings);
  108. begin
  109.  
  110. end;
  111.  
  112. procedure TPrinters.SetPrinters(const Value: TStrings);
  113. begin
  114.  
  115. end;
  116.  
  117. end.
  118.