Rendre une application Java invisible pour un utilisateur
Question
J'essaie de trouver un moyen de rendre une application Java invisible pour l'utilisateur.
En gros, j'essaie simplement de supprimer ceci
<- Image
Comment cela peut-il être fait?
public class TransparentWindow extends JFrame {
public TransparentWindow() {
initComponents();
}
@SuppressWarnings("unchecked")
private void initComponents() {
setExtendedState(Frame.MAXIMIZED_BOTH);
setResizable(false);
setUndecorated(true);
setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
setAlwaysOnTop(true);
System.setProperty("sun.java2d.noddraw", "true");
WindowUtils.setWindowTransparent(this, true);
WindowUtils.setWindowAlpha(this, 0.6f);
}
public static void main(String[] args) {
new TransparentWindow().setVisible(true);
}
}
La solution
Je semble juste avoir trouvé la réponse, il suffit de mettre la ligne setVisible(false);
dans les commentaires et vous verrez le programme réel, UNCOMMENT la ligne pour ne voir aucune trace est laissée, pour autant que je puisse voir, que le programme Java est en cours d'exécutionquelque part, jusqu'à ce que vous n'ajoutiez pas l'icône dans votre barre d'état système, manuellement.De plus, comment supprimer votre application du Gestionnaire des tâches, cette question demeure, bien que vous puissiez supprimer ladite icône, comme vous l'avez indiqué dans votre question.
import javax.swing.*;
public class TransparentWindow extends JFrame
{
public TransparentWindow()
{
initComponents();
}
@SuppressWarnings("unchecked")
private void initComponents()
{
setExtendedState(JFrame.MAXIMIZED_BOTH);
setResizable(false);
setUndecorated(true);
setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
setAlwaysOnTop(true);
setOpacity(0.8f);
setSize(200, 200);
//System.setProperty("sun.java2d.noddraw", "true");
//WindowUtils.setWindowTransparent(this, true);
//WindowUtils.setWindowAlpha(this, 0.6f);
setVisible(true);
setVisible(false);
JOptionPane.showMessageDialog(this, "It is working!", "Guess : ", JOptionPane.INFORMATION_MESSAGE);
}
public static void main(String[] args)
{
TransparentWindow tw = new TransparentWindow();
}
}
Voici un aperçu de mon bureau sur l'exécution de ce programme, voir la barre des tâches
Autres conseils
Extension de JWindow
insted de JFrame
.(Je n'ai pas testé cela sur Windows 7 car je ne suis pas assis devant une boîte Windows pour le moment. Cela a fonctionné pour XP et fonctionne pour Unity, ce qui m'a surpris.)
Pour autant que je sache, il n'y a aucun moyen de supprimer l'icône de la barre des tâches.