PDA

Ver la Versión Completa : Imprimir desde un TService


gynch
23-03-2004, 14:09:46
Hola. Tengo una aplicación que se encarga de hacer de servidor de fax rudimentario, de manera que cuando le llega un fichero lo imprime.

La aplicación funciona correctamente siempre que no esté implementada como servicio. En el momento en el que modifico la aplicación para que sea un servicio ( Únicamente construyo esa clase desde el start del servicio TService y lo destruyo en el stop) deja de imprimir. ¿Alguien sabe por qué puede pasar esto?

gynch
24-03-2004, 14:06:36
Hola. He descubierto que otros servicios como FaxServer tienen dependencias con spooler, y he pensado que igual van por ahí los tiros. ¿Puede ser que no sepa comunicarse con spooler por el motivo que sea?

Pandre
02-04-2004, 19:35:23
Que tal gynch?

Hace días estuve haciendo unas pruebecitas con el WinXP en cuanto a los servicios creados con Delphi y demás. Pude ver, que los servicios tienen Denegado por el sistema operativo el interactuar con el escritorio.
Es por ello, por lo que no te permite imprimir, como tampoco te permitirá mostrar Forms o cuadros de diálogo.

SOLUCION: pedir expresamente a WinNT (NT, 2k o XP) que le permita al servicio interactuar con el escritorio, que hay 2 formas posibles:

1) Pon la propiedad Interactive del módulo del TService a TRUE.

2) La otra solución es irte a Panel de Control -> Herramientas Administrativas -> Servicios. Allí seleccionas tu servicio y le das a las Propiedades del mismo. Seleccionas la pestaña "Iniciar sesión". Marcas la opción "Cuenta del sistema local" y marcas la casilla "Permitir a los servicios que interactúen con el escritorio".

Es posible que tu problema sea ese, que WinNT te deniegue utilizar el Shell del escritorio (aquí escritorio se refiere a la interfaz de Windows, no al escritorio de los iconos :) ).

Nota: Es más cómoda la opción 1, la de activar esa propiedad que comento, pero debes tener en cuenta que para que funcione tienes que:
- desinstalar el servicio actual
- compilar el servicio con la propiedad en TRUE
- instalar de nuevo el servicio
(esta característica se activa al instalarlo, por ello que lo debes desinstalar y volver a instalar)
Notarás la comodidad, porque así podrás distribuirlo por varias máquinas sin tener que ir confirgurando uno a uno.

Bueno, espero que con éste método Windows te permita imprimir sin problemas. Tanto si te funciona como si no, postea aquí el resultado, ok?

Venga, un saludo y perdón por la extensión de este mensaje, pero es que estaba aburrido y me he enrollado un poco... Jejeje ;) Byez..z