Hola fanon
Normalmente los visores necesitan de un codigo de escape para inicializarlos (o a lo mejor llevan algun programa o driver para ello). Mirate la documentacion a ver.
De todas maneras, para crear una impresora seria algo asi
Código:
Procedure AddImpresora( PrinterName, PortName, DriverName,
PrintProcessor: string );
var
pName : PChar;
Level : DWORD;
pPrinter : PPrinterInfo2;
begin
pName := nil;
Level := 2;
New(pPrinter);
try
pPrinter^.pServerName := nil;
pPrinter^.pShareName := nil;
pPrinter^.pComment := nil;
pPrinter^.pLocation := nil;
pPrinter^.pDevMode := nil;
pPrinter^.pSepFile := nil;
pPrinter^.pDatatype := nil;
pPrinter^.pParameters := nil;
pPrinter^.pSecurityDescriptor := nil;
pPrinter^.Attributes := 0;
pPrinter^.Priority := 0;
pPrinter^.DefaultPriority := 0;
pPrinter^.StartTime := 0;
pPrinter^.UntilTime := 0;
pPrinter^.Status := 0;
pPrinter^.cJobs := 0;
pPrinter^.AveragePPM :=0;
pPrinter^.pPrinterName := PCHAR(PrinterName);
pPrinter^.pPortName := PCHAR(PortName);
pPrinter^.pDriverName := PCHAR(DriverName);
pPrinter^.pPrintProcessor := PCHAR(PrintProcessor);
// 1802 -> Este código de Error nos indica que la impresora ya existe.
if (AddPrinter(pName, Level, pPrinter) = 0) and (GetlastError <> 1802) then
begin
Raise Exception.Create('La Impresora no se pudo crear');
end;
finally
Dispose(pPrinter);
end;
end;
Lo malo del método es que necesitas tener los drivers de la impresora en el sistema
Espero te sirva