Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-10-2008
Avatar de Softweb
Softweb Softweb is offline
Miembro
 
Registrado: ago 2008
Posts: 46
Poder: 0
Softweb Va por buen camino
TService y TForm

Hola tengo una aplicacion de mantenimiento que funciona con un componente TrayIcon de forma que cuando se ejecute se iconize en la barra y que funciona perfectamente.

El problema surge cuando lo e tenido que instalar en un Windows Server 2003 que para que funcione la e tenido que convertir en un servicio el cual funciona bien hasta que llamo a el Form con Show o ShowModal para que el TrayIcon instale el icono en la barra, entonce me sale un error de windows diciendo que el servicio esta intentando mostrar ventana de mensaje no permitido, .

Tiene alguien codigo de un Servicio que maneje Forms?

Saludos y gracias.
Responder Con Cita
  #2  
Antiguo 15-10-2008
JAV JAV is offline
Miembro
 
Registrado: mar 2005
Posts: 34
Poder: 0
JAV Va por buen camino
Me parece que el servicio debería guardar la información en disco y otra aplicación GUI (Graphic User Interface) con un formulario debería leerla y mostrarla.
Responder Con Cita
  #3  
Antiguo 15-10-2008
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Un servicio no puede interactuar con el escritorio porque no tiene acceso a él. Como puede estar arrancado con la sesión cerrada, no tiene capacidad para acceder a la barra de tareas ( tray icon)
El servicio deberá ser lo suficientemente inteligente para saber si existe una sesión de usuario abierta , y en ese caso lanzar otro proceso, que será el que ponga el trayicon. Para eso podrías utilizar un timer, que cada x tiempo mire si hay algún usuario con el escritorio abierto.

Desgraciadamente, nunca he intentado eso, por lo que no puedo ayudarte.

Suerte y saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #4  
Antiguo 17-10-2008
Avatar de Softweb
Softweb Softweb is offline
Miembro
 
Registrado: ago 2008
Posts: 46
Poder: 0
Softweb Va por buen camino
Cita:
Empezado por fjcg02 Ver Mensaje
Un servicio no puede interactuar con el escritorio porque no tiene acceso a él. Como puede estar arrancado con la sesión cerrada, no tiene capacidad para acceder a la barra de tareas ( tray icon)
El servicio deberá ser lo suficientemente inteligente para saber si existe una sesión de usuario abierta , y en ese caso lanzar otro proceso, que será el que ponga el trayicon. Para eso podrías utilizar un timer, que cada x tiempo mire si hay algún usuario con el escritorio abierto.

Desgraciadamente, nunca he intentado eso, por lo que no puedo ayudarte.
Pues te equivocas as dado en el clavo del problema y incluso la solucion ya que funciona.

Muchas gracias.
Saludos.
Responder Con Cita
  #5  
Antiguo 17-10-2008
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Podrías darnos una pequeña explicación ? Es por culturilla general, y porque "me equivoco y doy la solución" ¿?.
No he trabajado con servicios, por lo que no puedo darte más información, pero generalmente el problema es el que comentaba.

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #6  
Antiguo 20-10-2008
Avatar de Softweb
Softweb Softweb is offline
Miembro
 
Registrado: ago 2008
Posts: 46
Poder: 0
Softweb Va por buen camino
Cita:
Empezado por fjcg02 Ver Mensaje
Podrías darnos una pequeña explicación ? Es por culturilla general, y porque "me equivoco y doy la solución" ¿?.
No he trabajado con servicios, por lo que no puedo darte más información, pero generalmente el problema es el que comentaba.

Saludos
Hola
Desia que te equivocabas al decir el final de esta frase

Cita:
Desgraciadamente, nunca he intentado eso, por lo que no puedo ayudarte.
y me diste la solución con la frase.

Cita:
Un servicio no puede interactuar con el escritorio porque no tiene acceso a él
Ya que el servicio siempre reventaba al intentar mostrar la ventana, por lo que pensé que tal vez el error es que el servicio no tenia acceso a la ventana o mejor dicho la ventana acceso a su padre (el servicio), por lo cual quite la declaración publica de la variable de la ventana y la declare como variable de la clase del servicio y "funciono", funciona perfectamente,

Lo de mirar si tiene una sesion abierta para poner el trayicon ya lo realiza el servicio por si solo.

Saludos y gracias
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Servicios (TService) Ayuda. LockDoor C++ Builder 3 31-10-2005 23:16:17
Tservice , inputbox o forms NPIdea Varios 0 29-04-2005 18:08:23
TService, IB, FB OSKR C++ Builder 0 27-04-2005 11:51:11
Imprimir desde un TService gynch Varios 2 02-04-2004 19:35:23
Imprimir desde un TService gynch Impresión 0 24-03-2004 14:12:16


La franja horaria es GMT +2. Ahora son las 17:54:13.


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