PDA

Ver la Versión Completa : obtener nombre de impresora en sesion


engranaje
10-06-2011, 13:27:45
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