Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   obtener nombre de impresora en sesion (https://www.clubdelphi.com/foros/showthread.php?t=74299)

engranaje 10-06-2011 13:27:45

obtener nombre de impresora en sesion
 
Hola un saludo a todos, estoy teniendo problemas para obtener el nombre de una impresora que necesito para poder utilizar openprinter:
basicamente hago esto:

printer.GetPrinter(pDevice,
pDriver,
pPort,
hD);

para posteriormente

(OpenPrinter(PChar(Pdevice), hPrn, nil)

esto funciona correctamente en local pero cuando trabajo con impresoras en citrix o en terminal server el nombre en pdevice que obtengo es del tipo
"impresora in sesion winspool" cuando debería ser por ejemplo "impresora in sesion 1" y me da error. He probado a obenter el nombre de la impresora directamente de printers de este modo:

strpcopy(pDevice, printer.printers[printer.printerindex]);

pero el caso es que el nombre que obtengo en ese caso el de tipo "impresora in session 1 on puerto" y tampoco me sirve. Por supuesto puedo tratar la string pero entiendo que debe haber una manera de conseguir el nombre que necesito. ¿Teneis alguna idea?

newtron 10-06-2011 16:36:49

Hola.

Estando conectado por terminal server el nombre de la impresora es tal y como dices "Impresora on .....". Si el problema es seleccionar la impresora puedes buscar la cadena del nombre de la impresora dentro de las impresoras disponibles y usar Printer.PrinterIndex para seleccionarla.

Saludos

engranaje 13-06-2011 08:38:12

Gracias por tu respuesta finalmente he conseguido el nombre que necesitab:

type
TPrinterDevice = class
Driver, Device, Port: string;
end;

TPrinterDevice(Printer.Printers.Objects[Printer.PrinterIndex-1]).Device


La franja horaria es GMT +2. Ahora son las 20:14:46.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi