скрыть

скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Google  
 

Сохранить установки принтера в файл



Оформил: DeeCo

{ 
  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.





Copyright © 2004-2016 "Delphi Sources". Delphi World FAQ




Группа ВКонтакте   Ссылка на Twitter   Группа на Facebook