这是我在 Stack Overflow 上的第一篇文章,我只是想知道制作系统托盘应用程序的选项。该应用程序将在仍在运行时从系统托盘主要运行,并且可以在单击时进入一个窗口。还需要对全局击键跟踪提供一些支持,以调出一个窗口。
我很好奇我有哪些选择,因为我确信有很多方法可以做到这一点。尽管我对 C++ 有一些经验,但我最熟悉 Java。如果它们对它们有一些明确的好处,我愿意探索其他语言,尽管以某种方式使用我所知道的东西会很好。
谢谢
这是我在 Stack Overflow 上的第一篇文章,我只是想知道制作系统托盘应用程序的选项。该应用程序将在仍在运行时从系统托盘主要运行,并且可以在单击时进入一个窗口。还需要对全局击键跟踪提供一些支持,以调出一个窗口。
我很好奇我有哪些选择,因为我确信有很多方法可以做到这一点。尽管我对 C++ 有一些经验,但我最熟悉 Java。如果它们对它们有一些明确的好处,我愿意探索其他语言,尽管以某种方式使用我所知道的东西会很好。
谢谢
Java 6 具有允许创建使用系统托盘的应用程序的新功能。
Java SE 6 中的新系统托盘功能一文深入探讨了细节,并提供了一些示例代码。
新添加的SystemTray
和包TrayIcon
的类java.awt
可用于将图标添加到系统托盘。图标可以响应鼠标点击并使用弹出菜单。但是,这个新功能是 AWT 的一部分,因此它与 Swing 组件的集成效果并不好。
这是一个显示在系统托盘中的小时钟示例,它是使用 Java 6 中的SystemTray
和TrayIcon
类制作的:
(来源:coobird.net)
普通的旧 Winforms 会得到我的投票。
如果您熟悉 Java,那么使用其中一种托管语言使用 .NET 创建一个简单的托盘应用程序应该不会有什么困难。
以下是有关创建托盘应用程序的正确方法的一些建议。
在此处小心管理应用程序和 Java。托盘应用程序一直在运行。因此,如果它们写得不好,那么它们可以使用足够的系统资源来干扰其他事情。
一般来说,托管代码或 Java 没有任何问题,但要让托管或 Java 应用程序在内存、I/O 和 CPU 时间方面保持节俭可能会更加困难。
我是作为 Windows perf 团队的开发经理这么说的——我们已经看到了很多非常多的小猪托盘应用程序。是的,有些甚至是 Windows 或 MSFT 应用程序。
编写一个非常小的轻量级托盘应用程序可能是一种更好的方法,该应用程序可以在用户需要时启动更丰富的进程。您可以在低级 Win32 API 之上用简单的 C++ 编写您的试用应用程序。如果您不想直接使用 Win32 API,可以使用Windows 模板库。