Scalabium Software

SMExport advertising
Knowledge for your independence'.
Home Delphi and C++Builder tips

#19: How can I get the printer settings?

Today I continue to post a tips for printer settings. At first, you must open the printer device:

At first, you must open the printer device:

  FDevice: PChar;
  FDriver: PChar;
  FPort: PChar;
  DeviceMode: THandle;
  DevMode: PDeviceMode;

procedure OpenThePrinterDevice;
  Driver_Info2: PDriverInfo2;
  Retrieved: dword;
  hPrinter: THandle;
  Printer().GetPrinter(FDevice, FDriver, FPort, DeviceMode);
  if DeviceMode = 0 then
    Printer().GetPrinter(FDevice, FDriver, FPort, DeviceMode);
  OpenPrinter(FDevice, hPrinter, nil);
  GetMem(Driver_Info2, 255);
  GetPrinterDriver(hPrinter, nil, 2, Driver_info_2, 255, Retrieved);
  StrLCopy(FDriver, PChar(ExtractFileName(StrPas(Driver_Info2^.PDriverPath)) + #0), 63);
  FreeMem(Driver_info_2, 255);
  DevMode := GlobalLock(DeviceMode);

And now you can get the information from printer. For example, the orientation settings:

    if ((DevMode^.dmFields and DM_ORIENTATION) = DM_ORIENTATION) and
       (DevMode^.dmOrientation = DMORIENT_LANDSCAPE) then

Also you can detect a paper size, paper source, print duplex and quality etc. View a const description in Windows.pas.

At last, don't forget to unlock a device:

Published: August 30, 1999

See also
Paradox ActiveX
Fast Document Viewer
dBase Viewer
SMImport suite
ABA Document Convert
Excel Reader (dll)
ABA Spreadsheet Convert
Paradox Password Recovery

Contact to webmaster


Borland Software Code Gear Scalabium Delphi tips

Copyright© 1998-2022, Scalabium Software. All rights reserved.

SMExport advertising