gpt4 book ai didi

当 java 应用程序安装为 Windows 7 服务时,java.awt.Trayicon 不显示

转载 作者:行者123 更新时间:2023-11-30 11:48:12 48 4
gpt4 key购买 nike

我已将我的 Java 应用程序安装为 Windows 7(32 位)操作系统上的 Windows 服务。我的应用程序应该在服务启动时在通知区域显示 java.awt.TrayIcon。但它没有显示图标。同一个应用程序在 Windows XP 上运行良好。有人对此有任何想法吗?

最佳答案

Windows 上的服务不是图形化的。因为它在没有任何用户登录的情况下运行。如果你想要一个托盘图标和一个图形窗口来管理你的服务,你必须编写另一个与你的服务(本地网络,dcom,...)通信的程序并将这个程序添加到 session 启动。(这就是我在我的计算机上完成自己的 java 服务的方式)。


好的,我在 Windows server 2003 下工作。也许自 windows 2003 以来服务不能有 GUI?

你要开发的代码取决于你想要什么?只是有一个 trayicon 来监视 te 服务进程仍在运行?单击系统托盘时显示参数窗口?...

我给你放了一段简单的代码(没有异常管理澄清代码)来监控服务是否仍在运行和响应(这是标准的java代码,不需要特殊的库):

系统托盘程序:

//if any Exception --> ERROR CODE
Socket socket = new Socket("localhost", 25146);
DataOutputStream outToServer = new DataOutputStream(socket.getOutputStream());
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while (true) {
outToServer.writeBytes("ping\n");
//Wait maximum 5s to have an answer from the service
for (int i = 0; inFromUser.ready() == false && i < 5; ++i) {
Thread.sleep(1000);
}
if (inFromUser.ready() == false) {
//ERROR CODE (change systrat icon, display balloon tooltip,...)
} else {
pong = inFromUser.readLine();
//Check the answer
}

//Check only every second (don't flood yout computer ;))
Thread.sleep(1000);
}
inFromUser.close();
outToServer.close();
socket.close();

服务程序代码:

ServerSocket socket = new ServerSocket(this._port);
while (true) {
Socket connection = socket.accept();
Thread thread = new Thread(new Runnable {
BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connection.getInputStream()));
DataOutputStream outToClient = new DataOutputStream(connection.getOutputStream());
Scanner scanner = new Scanner(inFromClient);
while (scanner.hasNextLine()) {
outToClient.writeBytes(scanner.nextLine());
}
inFromClient.close();
outToClient.close();
connection.close();
});
thread.start();
}

如果你想弹出一个参数窗口,你可以尝试在你的系统托盘程序中编写 GUI,将结果写入一个参数文件,然后向你的服务发送一个特殊的关键字来重新加载参数文件......或者要么将 GUI 直接写入您的服务,发送一个特殊的关键字,然后执行 jframe.setVisible(true) 并希望它将显示在当前 session 中......:)

关于当 java 应用程序安装为 Windows 7 服务时,java.awt.Trayicon 不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8986042/

48 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com