3

起動時にすでに起動されているかどうかを確認するJavaFXアプリケーションがあります(一度に実行するインスタンスは1つだけです)。問題はそれをどのように定義するかです!

「javaw.exe」ではなく、「MyProg.exe」プロセスとして Windows タスク マネージャーに表示される .exe ファイルに JavaFX アプリケーションをパックする (または .exe ランチャーを作成する) ことを試みました。しかし、それは解決策ではありません (netbeans のツールを試しました)。アプリケーションに jre を追加して 1 MB から拡大するためです。130+ MB まで。(それを手伝ってくれませんか? )

launch4j を試してみましたが、ランチャーと .exe パッケージの両方が javaw.exe を起動してアプリを実行します。そして、プロセスマネージャーをチェックして、わからない2つのjavaw.exeを確認すると、それは私のアプリの2つのインスタンスですか、それとも実行中の別のアプリですか?

明確に説明したことを願っています。誰かが私を助けてくれたらとても感謝しています!

4

1 に答える 1

2

あなたのアプローチから判断すると、Java から Windows のプロセスのリストを取得する方法はすでに見つかっているようです。この場合、次の解決策のいずれかを使用できます。

  1. 他のプロセス情報を考慮してください。たとえば、コマンド ラインまたはウィンドウ タイトル。Windows コマンド ラインはwmic.exe PROCESScommand を使用して取得でき、Unix ベースのシステムの場合はps -Af.
  2. プログラムが起動すると、そのプロセス ID がレジストリまたはホームディレクトリのファイルに保存されます。別のインスタンスが開始すると、その値をチェックし、その ID を持つプロセスが生きている場合は終了します。
于 2012-12-18T08:42:38.757 に答える