【问题标题】:Make a Java application invisible to a user使 Java 应用程序对用户不可见
【发布时间】:2012-02-21 02:20:14
【问题描述】:

我正在想办法让 Java 应用程序对用户不可见。

基本上只是想删除this

如何做到这一点?

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);
}
}

【问题讨论】:

  • 如果我没记错的话,让最外面的窗口显示 JPanel 而不是 JFrame。
  • @ThorbjørnRavnAndersen 我已经用我当前的代码编辑了我的帖子。
  • 这对于间谍软件和恶意软件非常有用!您拥有应用程序的用例是什么。在他们不知道的情况下在客户的计算机上运行?
  • @AndrewThompson 看这里:stackoverflow.com/questions/9372362/…
  • @AndrewThompson Nooooo...只是一个辅助指南和质量监控系统;-)。

标签: java swing jframe trayicon jwindow


【解决方案1】:

我似乎找到了答案,只需将行 setVisible(false); 放入 cmets 中,您将看到实际的程序,取消注释该行以查看没有留下任何痕迹,据我所知,Java 程序正在某个地方运行,直到您不会手动将图标添加到系统托盘中。此外,如何从任务管理器中删除您的应用程序该问题仍然存在,尽管您可以删除上述图标,正如您在问题中指出的那样。

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();
    }
}

这是我运行此程序时的桌面快照,请参阅任务栏

【讨论】:

  • 屏幕截图显示了顶层窗口的合法用途,而右侧没有任务栏条目。
  • @his : 对不起,我听不懂你的意思。
  • @nIcEcOw 哈哈,你不是说吗?保时捷的设计在世界上是独一无二的。我什至可以通过它的保险杠检测到它。
【解决方案2】:

JWindow 扩展至JFrame。 (我没有在 Windows 7 上测试这个,因为我现在没有坐在 Windows 机器前。它适用于 XP 和 Unity,这让我感到惊讶。)

【讨论】:

  • +1 它确实适用于 Windows 7,这给了我一个关于如何制作小部件的答案,呵呵 :-)
【解决方案3】:

据我所知,没有办法移除任务栏图标。

【讨论】:

    猜你喜欢
    • 2019-12-06
    • 2019-11-12
    • 1970-01-01
    • 2014-08-03
    • 1970-01-01
    • 2011-02-07
    • 2016-06-03
    • 2015-05-21
    • 1970-01-01
    相关资源
    最近更新 更多