JavaアプリケーションをWindows 7(32ビット)OS上にWindowsサービスとしてインストールしました。私のアプリケーションは、サービス開始時に通知領域にjava.awt.TrayIconを表示することが期待されます。しかし、それはアイコンを表示していません。 Windows XPでも同じアプリケーションが正常に動作しています。 誰もそれについて考えていますか?javaアプリケーションがWindows 7サービスとしてインストールされている場合、java.awt.Trayiconが表示されない
答えて
Windows上のサービスはグラフィカルではありません。これは、ユーザーがログオンしていない状態で実行されているためです。 サービスを管理するトレイアイコンとグラフィカルウィンドウが必要な場合は、サービス(ローカルネットワーク、dcomなど)と通信する別のプログラムを作成し、このプログラムをセッションの起動に追加する必要があります。 (それは私のコンピュータで自分のJavaサービスをやったことがあります)。
私はWindowsサーバー2003で作業しました。Windows 2003以降、サービスにGUIを使用できないことがありますか?
開発しなければならないコードは、必要なものによって異なります。 teサービスプロセスがまだ実行中であることを監視するトレイコンを持っているだけですか? ...
私は、サービスがまだ実行されて応答していることを監視するための単純なコード(例外管理なしでコードを明確にする)を入れました(これは標準のjavaですコード、特別なlibに必要):
システムトレイプログラム:
//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();
}
あなたはAPをポップアップする場合arameterウィンドウでは、あなたのシステムトレイプログラムのGUIを書き、その結果をパラメータファイルに書き込んだり、特別なキーワードをサービスに送ってパラメータファイルをリロードしたり、GUIを直接サービスに書き込んだりすることができます特別なキーワードを送信し、jframe.setVisible(true)を実行して現在のセッションで表示されることを期待してください:)
ご返信ありがとうございます。 Windows XPで同じアプリケーションを実行しても問題ありません。これはWindows 7固有の問題ですか?ソリューションに関する詳細情報を提供できますか?可能であれば、いくつかのコードで。 –
マイクロソフトでは、2006年にインタラクティブサービスがどのように機能するかを変更しました。 XPとServer 2003は、 "Session 0 Isolation"のおかげでVista、7またはServer 2008で動作しなくなりました。
もっとここで読む:
- 1. IFRAMEが表示されていない行が表示されていない場合
- 2. セットアッププロジェクトでインストールしたときにWindowsサービスが表示されない
- 3. Javascriptのmouseoutが表示されている場合、表示されていない場合は「no id」と表示されます
- 4. XSLTが表示されている場合はメールが表示されます
- 5. パネルが表示されない場合
- 6. iOSアプリケーションがjqueryを使用してインストールされていない場合にダウンロードボタンを表示
- 7. Gemがインストールされていない、接続エラーが表示されている
- 8. JDKがインストールされていないJava 7トリガ・ヒープ・ダンプ
- 9. ディレクトリエントリがWindows上でサービスとして実行されている場合にディレクトリエントリがバインドされる理由
- 10. モバイルキーボードが表示されているときにtransform3dが画面に表示されない場合
- 11. クラスが登録されていませんWindows 7の開発環境でAxShockwaveFlashが使用されている場合にエラーが表示されます
- 12. コンテンツが表示されている場合はロールオーバーで表示
- 13. Visual Studio 2013と2015が既にWindows 7にインストールされている場合Visual Studio 2010のインストール方法
- 14. InnoのインストールでPython/Qt/SQLite3アプリケーションがインストールされない場合
- 15. JavaFXのロードインジケータがアニメーション表示されていない場合
- 16. フレームがサイトに表示されていない場合はリダイレクト
- 17. Chromeのタブが表示されていない場合、setInterval 'stacks'
- 18. JDBC - javaにインストールされたドライバが表示されない
- 19. アプリケーションがインストールされていない
- 20. プレースホルダが表示されていない場合は非表示にします
- 21. Facebook Facebookのネイティブアプリがインストールされていない場合は、Safariが表示されます。
- 22. ヘルプテキストが表示されている場合は表示されますか?
- 23. Windowsサービスがサービスに表示されない
- 24. ディレクトリが空であるかどうかを確認し、イメージが表示されていない場合はyes、デフォルトイメージが表示されている場合
- 25. Webアプリケーションがインストールされていない場合、ユーザーをセットアップスクリプトにリダイレクトします。
- 26. データベースに--None--プルダウンメニューが表示されている場合、他のショーデータが入力されている場合
- 27. VBAフィルタに値が表示されない/表示されない場合
- 28. アプリケーションが長い間バックグラウンドで表示されている場合、UIAlertViewは表示されません
- 29. paint()が定義されているとJavaコンポーネントが表示されない
- 30. インストールされているアプリケーションがWindows 10にアンインストールされていません。
を使用すると、サービスのプロパティのパネル「ログオン」の「デスクトップとの対話をサービスに許可」フラグを設定することがありますか? –
はい「サービスがデスクトップとやり取りできるようにする」というフラグを設定しました。 –