Hola newtron
La verdad es que no me he topado con WS 2016, pero prueba este ejemplo a ver si te funciona:
Código Delphi
[-]
....
implementation
uses Printers;
function GetDefaultPrinter(prnName : PAnsiChar; var bufSize : DWORD ) : BOOL;
stdcall; external 'winspool.drv' name 'GetDefaultPrinterA';
function GetDefaultPrinterName(): string;
var
lpName: PChar;
szBuff: DWORD;
begin
GetDefaultPrinter(nil, szBuff);
GetMem(lpName, szBuff);
try
GetDefaultPrinter(lpName, szBuff);
Result := lpName;
finally
FreeMem(lpName);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ComboBox1.Items := Printer.Printers; ComboBox1.ItemIndex := -1;
ComboBox1.ItemIndex := ComboBox1.Items.IndexOf(GetDefaultPrinterName());
end;
(*) Para obtener la lista de impresoras se podría usar la función
EnumPrinters pero si no recuerdo mal, es la que usa la propiedad
Printers así que no creo que se gane mucho...
Saludos