2010-11-08 23 views
5

Estoy trabajando en una aplicación de escritorio creada en Java. estamos trabajando para la versión de Windows (para ejecutar en Windows O.S.) de la aplicación. Cuando ejecutamos nuestra aplicación, se crea un icono de la bandeja en el escritorio mediante el uso de systemtray comoCrear una instancia única para la bandeja del sistema en java

SystemTray tray = SystemTray.getSystemTray(); 

estoy creando sola instancia de la bandeja del sistema, lo que estoy creando en la clase principal de la aplicación.

estoy creando exe para mi aplicación. Mi problema es que cuando ejecuto el archivo exe de mi aplicación, crea un ícono de bandeja cada vez.

que quiero en mi aplicación sólo icono de una bandeja presentes en el escritorio y se ejecuta como un servicio. este ícono solo debe eliminarse cuando la aplicación se desinstala. Debería ejecutarse como servicio en segundo plano.

No recibo ninguna forma que me ayude a ejecutar mi aplicación como servicio y debería haber solo una instancia ejecutándose en segundo plano.

Quiero ejecutar mi aplicación creando un ícono de bandeja como servicio y debería haber presente una sola instancia. Por favor, guíame en este tema.

Gracias por sus valiosas todas las sugerencias de antelación.

Respuesta

2

Como dijo Mudassir, debe agregar una marca cuando inicie el programa que intenta encontrar otra instancia en ejecución de su aplicación. Esto se puede hacer creando un archivo específico al inicio y eliminándolo al cerrar. Si el archivo ya está presente cuando inicia su aplicación, significa que se está ejecutando otra instancia. También podría usar comunicaciones entre procesos, pero sería más difícil que un archivo simple.

Para la parte "servicio", puede ocultar la ventana principal al inicio, por lo que su aplicación se ejecutará como si fuera un servicio de Windows.

+0

Gracias por responder, espero que esto funcione para mí. Por favor, elabore un poco más para la parte de servicio. – Toman

+0

No creo que sea posible crear un servicio de Windows en Java, es decir, un servicio que se puede ejecutar automáticamente al inicio y que se puede administrar como otros servicios estándar de Windows. Pero podría hacer algo similar al agregar una entrada en el registro (google algo como "inicio automático de Windows"). Cuando se inicia su programa, comprobará si se está ejecutando otra instancia. De lo contrario, creará un ícono de la bandeja del sistema como lo desee, y ocultará sus ventanas (si realmente está usando algún tipo de GUI). –

1

Realizar la aplicación de instancia única. Y cuéntenos cómo está haciendo un archivo .EXE en Java?

+0

Gracias por responder Mudassir. Estoy creando exe usando el instalador avanzado. El instalador avanzado usa archivos jar y crea un exe del jar. – Toman

1

Para que aparezca un icono de la bandeja, su aplicación debe estar en ejecución. Si el icono de la bandeja parece estar allí dos veces (o más), su aplicación se ejecutará varias veces. Tienes que agregar un cheque para esto tú mismo.

No desea ejecutar su aplicación como un servicio de Windows, ya que normalmente estos no tienen acceso al escritorio de Windows.

+0

No desea ejecutar su aplicación como un servicio de Windows, ya que normalmente estos no tienen acceso al escritorio de Windows. Puede ser que Toman esté intentando crear algún tipo de programa antivirus que se ejecute en segundo plano y muestre su presencia a través del icono de la bandeja del sistema. – Mudassir

+0

@Mudassir En este caso, debería crear dos aplicaciones. Uno para el servicio de fondo de Windows y el segundo que se conecta a través de la red o sthg else. – ZeissS

+0

Gracias por sus comentarios. Mi aplicación es para hacer una copia de seguridad en línea. Toma una copia de seguridad de los archivos seleccionados y las actualizaciones automáticamente en el servidor, por lo tanto, es necesario que se ejecute como un servicio en segundo plano. Estoy creando una sola instancia para la bandeja del sistema en la clase principal de la aplicación, pero mi aplicación no puede identificar si alguna instancia ya está presente o no. – Toman

Cuestiones relacionadas