Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Сохранить установки принтера в файл

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

{ 
  Create a unit PrinterSetup and place code in this unit 
  Do the following to save the printer config to file 
}

 procedure TForm1.Button1Click(Sender: TObject);
 var
   PrinterSetup: TPrinterSetup
 begin
   PrinterSetup := TPrinterSetup.Create;
   PrinterSetup.SaveSetup(FileName);
   //where file name is a string to the location of the File ex.'c:\print.cfg' 
  PrinterSetup.Free;
 end

 {***********************************}

 unit PrinterSetup;

 interface

 uses
   printers,
   windows,
   SysUtils,
   Classes,
   WinSpool;

 type
   TPrinterSetup = class

   private
     Device, Driver, Port: array[0..CCHDEVICENAME] of char;
     DeviceMode: THandle;
     procedure Refresh;

   protected

   public
     procedure SaveSetup(FileName: TFilename);
     procedure LoadSetup(FileName: TFilename);
   end;
   TPrinterConfig = record
     ADevice, ADriver, APort: array[0..CCHDEVICENAME] of char;
     SizeOfDeviceMode: DWORD;
   end;

 implementation

 procedure TPrinterSetup.Refresh;
 begin
   Printer.GetPrinter(Device, Driver, Port, DeviceMode);
 end;

 procedure TPrinterSetup.SaveSetup(FileName: TFilename);
 var
   StubDevMode: TDeviceMode;
   SetupPrinter: TPrinterConfig;
   FPrinterHandle: THandle;
   fFileConfig: file of TPrinterConfig;
   fFileDevMode: file of Char;
   pDevMode: PChar;
   Contador: Integer;
 begin
   Refresh;
   with SetupPrinter do
   begin
     StrLCopy(ADevice, Device, SizeOf(ADevice));
     StrLCopy(ADriver, Driver, SizeOf(ADriver));
     StrLCopy(APort, Port, SizeOf(APort));
     OpenPrinter(Device, FPrinterHandle, nil);
     SizeOfDeviceMode := DocumentProperties(0, FPrinterHandle, Device,
       StubDevMode, StubDevMode, 0);
   end;
   AssignFile(fFileConfig, FileName);
   ReWrite(fFileConfig);
   Write(fFileConfig, SetupPrinter);
   CloseFile(fFileConfig);
   AssignFile(fFileDevMode, FileName);
   Reset(fFileDevMode);
   Seek(fFileDevMode, FileSize(fFileDevMode));
   pDevMode := GlobalLock(DeviceMode);
   for Contador := 0 to SetupPrinter.SizeOfDeviceMode - 1 do
   begin
     Write(fFileDevMode, pDevMode[Contador]);
   end;
   CloseFile(fFileDevMode);
   GlobalUnLock(DeviceMode);
 end;


 procedure TPrinterSetup.LoadSetup(FileName: TFilename);
 var
   SetupPrinter: TPrinterConfig;
   fFileConfig: file of TPrinterConfig;
   fFileDevMode: file of Char;
   ADeviceMode: THandle;
   pDevMode: PChar;
   Contador: Integer;
 begin
   if FileExists(FileName) then
   begin
     AssignFile(fFileConfig, FileName);
     Reset(fFileConfig);
     read(fFileConfig, SetupPrinter);
     CloseFile(fFileConfig);
     AssignFile(fFileDevMode, FileName);
     Reset(fFileDevMode);
     Seek(fFileDevMode, SizeOf(SetupPrinter));
     ADeviceMode := GlobalAlloc(GHND, SetupPrinter.SizeOfDeviceMode);
     pDevMode := GlobalLock(ADeviceMode);
     for Contador := 0 to SetupPrinter.SizeOfDeviceMode - 1 do
     begin
       read(fFileDevMode, char(pDevMode[Contador]));
     end;
     CloseFile(fFileDevMode);
     GlobalUnLock(ADeviceMode);
     Printer.SetPrinter(SetupPrinter.ADevice, SetupPrinter.ADriver,
       SetupPrinter.APort, ADeviceMode);
   end;
 end;

 end.
Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay