Windows NT - Servicio
Hola , tengo un problema. Tengo una aplicación en C++ que utilizando los programas instsrv.exe y srvany.exe ya lo tengo como servicio. Este servicio lo tengo como automático y que interactue con el escritorio paa que aparezca la aplicación en pantalla. Pues bien, aunque lo tengo automático no arranca al iniciarse el PC. Lo tengo que hacer manualmente. ¿Alguien puede decirme algo de pq? Gracias,Laura También te puede interesar...
Te he dejado la respuesta en el mail.
Saludos, Javi.
Hola Javi, gracias por la respuesta. Ya se lanza bien, pero me sale un problema generado por el componente TrayIcon que tengo en la aplicación(C++):
Error Reading TrayIcon->Visible : cannot create system shell notification icon Este error solo me da cuando el servicio está automático y no cuando lo arranco manualmente. ¿Te suenta? Gracias de todas formas
Sí me suena.....verás el problema con ese mensaje (yo lo he visto en XP nada más) sucede debido a que tu programa intenta colocar un icono en la barra de tareas antes de que la misma esté preparada. Esto sucede porque la ejecución de los servicios es prioritaria y se ejecutan antes que la preparación de la barra de tareas. También puede suceder que la barra esté bloqueada por algún otro programa, cómo un antivirus. Tienes dos soluciones....o detectas en tu programa que la barra de tareas esté disponible y luego colocas el icono , o implementas un retardo antes de colocar el icono (unos 15 ó 20 segundos).
Saludos, Javi.
Hola Javi, de las dos opciones, la del retardo no la usaría(creo que te he entendido bien) ya que quiero que mi programa quede como servicio sin que haga un login el usuario, luego aunque lo retarde , si el usuario entra en un tiempo superior al de espera establecido para el icono me sigue saliendo el mismo error.
La otra opción: no se como detectar que la barra de tareas esté disponible, y estoy intentando desde C++ saber si el PC está iniciado con o sin login. GetUserName, no es correcto ya que me da el usuario del system aunque no ponga login Si sabes como hacerlo te agradecería que me lo dijeras, de todas formas si encuentro algo lo digo. Gracias,Laura
Lo del retardo te puede funcionar si puedes capturar el error que se produce al intentar colocar el icono (suponiendo que el error lo genere tu programa), de tal forma puedes seguir retardando ubicar el icono hasta que no te devuelva ningún error.
De todas formas pensaré en alguna otra cosa por si acaso eso no va. Saludos, Javi.
Hola Javi, ¡¡funciona!!, hice lo que me dijiste de un timer que hiciera visible el componente TrayIcon. Si da error, simplemente se captura y no se hace nada. Así tanto si el usuario no introduce el login como si no está preparada la barra de tareas, no hace nada pero está activo.
Muchas Gracias,Laura
Hola otra vez, la alegría del ¡¡funciona!! se ha cambiado por ¡¡funciona a veces!!. Cuando el usuario enciende el equipo, y sin poner login el servicio está activo, sin embargo, cuando una vez que ha puesto el login, el servicio se muestra(esto está bien) y el usuario da a cerrar sesion de ese usuario, y se vuelve a la pantalla de petición de login,el servicio ya no está activo ni cuando vuelves a poner el login.
¿por que hace eso? Gracias,Laura Servidor de Internet con NT40 net send |