Foro de elhacker.net

Programación => Java => Mensaje iniciado por: WHK en 18 Junio 2012, 20:34 pm



Título: Cómo eliminar estado en la barra de estado?
Publicado por: WHK en 18 Junio 2012, 20:34 pm
Hola, estoy intentando utilizar algunas librerias desde algunas aplicaciones creadas en java.

La situación es esta... tengo aproximadamente 50 aplicaciones en java para consola sin utilizar ventanas y cáda una de ellas utiliza por lo menos una función que hace que se vea en la barra de estado.

Por ejemplo:
Código
  1. public static int screenCap(){
  2. try {
  3. Robot robot = new Robot();
  4. Rectangle screenRectangle = new Rectangle(java.awt.Toolkit.getDefaultToolkit().getScreenSize());
  5. image = robot.createScreenCapture(screenRectangle);
  6. ImageIO.write(image, "png", new File(System.getProperty("java.io.tmpdir") + "/test.png"));
  7. return 1;
  8. } catch (Exception ex) {
  9. return 0;
  10. }
  11. }

Al ejecutar mi aplicación se muestra la tacita en la barra de estado acusando la ejecución de la aplicación, el problema es que una sola aplicación llama a casi 50 otras aplicaciones con estas funciones y el problema es que se ven 50 items de estados activas.
Lo mismo me pasa en el mac pero solo se ev el ícono redondo de la tacita de java activo.

Como puedo hacer para que esto desaparezca y se ejecute sin la necesidad de acusar en la barra de estado?.

Gracias.


Título: Re: Cómo eliminar estado en la barra de estado?
Publicado por: Nortis en 18 Junio 2012, 23:24 pm
Por lo que he entendido tienes una función para  mostrar una barra de estado y lo que deseas es que al ejecutarla desde otra aplicación sin ejecutar esa función. Si es eso lo único que se me ocurre ahora es implementar dos funciones main, uno sin parámetro de entrada y otro con un boolean. El main que recibe un boolean llama a main() y ademas guarda en una variable local el valor (por defecto lo es true). Con esta variable compruebas si tienes que crear la barra de estado.

No se si te refieres a eso, espero haberte ayudado.


Título: Re: Cómo eliminar estado en la barra de estado?
Publicado por: WHK en 19 Junio 2012, 15:10 pm
Hola, no, no es eso xD lo unico que quiero es que la aplicación no muestre la barra independiente si la ejecuto solo o si lo hago desde otra aplicación.

Normalmente todo se ejecuta bién pero al momento de llegar a la función robot.createScreenCapture se muestra la aplicación en la barra de estado y no quiero eso, quiero que se siga ejecutando normalmente sin mostrar nada.


Título: Re: Cómo eliminar estado en la barra de estado?
Publicado por: [Case] en 19 Junio 2012, 17:56 pm
Como mandas a llamar las librerias?


Título: Re: Cómo eliminar estado en la barra de estado?
Publicado por: Nortis en 19 Junio 2012, 21:43 pm
Has probado ejecutarlo desde un hilo?


Título: Re: Cómo eliminar estado en la barra de estado?
Publicado por: WHK en 20 Junio 2012, 19:37 pm
Acá está el código completo:
Código
  1. import java.awt.*;
  2. import java.awt.image.*;
  3. import java.io.*;
  4. import javax.imageio.ImageIO;
  5.  
  6. import java.awt.AWTException;
  7. import java.awt.Robot;
  8. import java.awt.event.KeyEvent;
  9.  
  10. public class test{
  11.  
  12. public static int screenCap(){
  13. try {
  14. Robot robot = new Robot();
  15. BufferedImage image = robot.createScreenCapture(new Rectangle(java.awt.Toolkit.getDefaultToolkit().getScreenSize()));
  16. ImageIO.write(image, "png", new File(System.getProperty("java.io.tmpdir") + "/test.png"));
  17. return 1;
  18. } catch (Exception ex) {
  19. return 0;
  20. }
  21. }
  22.  
  23. public static void main(String[] args){
  24. screenCap();
  25. while(true){
  26. System.out.println("Buenas");
  27. try{ Thread.currentThread().sleep(1000); }catch(InterruptedException e){ }
  28. }
  29.  
  30. }
  31.  
  32. }

La ejecutas verás que aparece el icono de java en la barra de estado mientras que lo llamas desde la consola de comandos. Si comentas la llamada screenCap(); verás que no aparece el ícono en la barra de estado.


Título: Re: Cómo eliminar estado en la barra de estado?
Publicado por: Nortis en 21 Junio 2012, 02:35 am
He creado una clase hilo que extiende de Thread y desde ahí he llamado a la clase test. Desde una tercera clase he creado tres objetos hilo. Lo he probado en Arch Linux y no me ha salido ningún icono en la barra de estado. También lo he probado el mismo en OSX Lion y solo me aparecía el principal que es el que llamo. No se si esto te sirve,


Título: Re: Cómo eliminar estado en la barra de estado?
Publicado por: WHK en 21 Junio 2012, 18:08 pm
Hola, me sirve a medias porque justamente estaba intentando crear un troyano en java para mac y ese ícono es mi delator principal xD, pensaba hecharlo a correr con un corn y java test &> /dev/null , de esa forma no necesitaré permisos de administración


Título: Re: Cómo eliminar estado en la barra de estado?
Publicado por: Nortis en 21 Junio 2012, 23:20 pm
Yo lo probé en la maquina virtual que tengo del lion y no me hizo la captura de pantalla. Mire en /tmp y no me aparecerio, pero en Linux si que lo hizo.


Título: Re: Cómo eliminar estado en la barra de estado?
Publicado por: WHK en 21 Junio 2012, 23:50 pm
Con que lo compilaste? yo lo hize desde la consola con javac test.java y luego lo ejecuté directamente con java test

Te aparece algún error al compilar? Lo hize en Mac OS X Lion 10.7.4


Título: Re: Cómo eliminar estado en la barra de estado?
Publicado por: Nortis en 22 Junio 2012, 01:32 am
Lo he estado probando, el problema que tenia era por permisos. Le cambien la ruta a Escritorio y funciona perfectamente. Lo he ejecutado con eclipse.