PDA

Ver la Versión Completa : crear servicio con formulario


mierda
20-12-2006, 10:47:35
Hola, tengo un programa que inicia un mediaplayer para que suene musica. El programa funciona perfectamente, pero lo quiero pasar a que inicie como servicio.
He realizado algunas pruebas, pero me gustaria saber cual es la forma correcta de hacerlo. Por ejemplo, crear un service aplication y luego añadirle el form al proyecto? hay que hacer algo mas?. Por favor, ilustrenme. Un saludo.

dec
20-12-2006, 10:53:07
Hola,

Pienso que una aplicación como la que describes (ojo, es mi opinión y a bote pronto) no necesita ejecutarse como un Servicio de Windows. Podría iniciarse, eso sí, al iniciarse Windows (y la sesión de un usuario) y permanecer desde un principio minimizada en la bandeja del sistema, por ejemplo.

Por otro lado no estoy seguro de que un Servicio de Windows pudiera mostrar un formulario... puesto que los Servicios "corren en un segundo plano" y pueden ser controlados, esto sí, por aplicaciones de escritorio. No sé. La verdad es que no estoy muy puesto en esto. ¿Y entonces para qué te respondo?

Bueno... a lo mejor te sirve de algo lo que he dicho. Seguro que otro compañero puede aportar mucho más, claro está. :)

mierda
20-12-2006, 11:10:15
Hola, gracias por responder, asi puedo explicar un poco mas que es lo q hace mi programa.

Es un programa que reproduce musica, que se encuentra en una carpeta. Esta musica, va para las tiendas que tenemos, entonces, no quiero que nadie tenga que iniciar la sesion de windows para que suene la musica. Por eso, si se inicia como servicio, cuando sale ctrl + sup + alt, ya esta sonando la musica.

En ningun momento quiero que se vea el form, solo que suene. Yo por sockets me encargo de controlarlo desde mi posicion.

Espero haber aclarado tus dudas. Gracias. Un saludo.

seoane
20-12-2006, 12:09:06
En ningun momento quiero que se vea el form, solo que suene. Yo por sockets me encargo de controlarlo desde mi posicion.


:confused: Si no vas a mostrarlo nunca, ¿para que lo quieres?. Si necesitas un "contenedor" para tus componentes, no seria mas adecuado, por ejemplo, un TDataModule. Y si no lo necesitas no tienes porque añadir nada, solo hay que implementar el código en los eventos correspondientes del TService.

mierda
20-12-2006, 12:43:57
Hola maquina, mi pensamiento ... no se si equivocado o no ... es la de desarrollar un programa, en este caso es uno de musica. Yo empiezo por hacer una aplicacion de escritorio, depuro, continuo y tal ...
Una vez que la tengo totalmente terminada, lo que hago es crear un service aplication le añado al proyecto el form que he terminado y en el

procedure TServprueba.ServiceExecute(Sender: TService);
begin
// init...
while not Terminated do
ServiceThread.ProcessRequests(True);// wait for termination
// exit...
end;

le pongo esto, con esto consigo que se ejecute el servicio con el form que he desarrollado, que en ningun momento se ve, pero que se inicia. Si despues sigo desarrollando el programa le meto otra vez la unit al proyecto y sigo teniendo el serv actualizado. Me es mucho mas comodo desarrollar en un form.

Al iniciarse el form se activa el mediaplayer .... y todos tan felices.

Desde q sale el ctrl + alt + sup esta sonando y si necesito algo por sockets lo ejecuto. Reiniciar el servicio y tal.

Problema: lo primero es q no se si esto es lo mas adecuado ... y lo segundo es q no se que he tocado en el form que ahora se ejecuta el servicio pero no suena.