Title: How to bring up a printers properties dialog
uses
WinSpool, Printers;
procedure TForm1.Button1Click(Sender: TObject);
const
{
The TPrinterDefaults structure specifies the default data type,
environment, initialization data, and access rights for a printer.
}
Defaults: TPrinterDefaults = (pDatatype: nil;
pDevMode: nil;
DesiredAccess: STANDARD_RIGHTS_REQUIRED or PRINTER_ACCESS_USE);
var
hPrinter: THandle;
Device: array[0..255] of char;
Driver: array[0..255] of char;
Port: array[0..255] of char;
hDeviceMode: THandle;
RetVal: Boolean;
begin
Printer.PrinterIndex := Combobox1.ItemIndex;
{ Retrieve information about the specified printer }
Printer.GetPrinter(Device,
Driver,
Port,
hDeviceMode);
{ Retrieve a handle identifying the specified printer or print }
if not OpenPrinter(@Device, hPrinter, @Defaults) then
RaiseLastWin32Error;
try
{ Display a printer-properties property sheet for the specified printer }
PrinterProperties(Handle, hPrinter);
finally
{ Close the specified printer object }
ClosePrinter(hPrinter);
end;
end;