web-dev-qa-db-ja.com

アプリケーションのインスタンスを1つだけ強制するにはどうすればよいですか?

早く使ってプログラムを開発しています。メインウィンドウを非表示/表示できるインジケーターを使用しています。

しかし、ランチャーからアプリケーションを起動すると、そのアプリケーションの新しいインスタンスが開始されます(追加のインジケーターが表示されます)。以前実行中のアプリのメインウィンドウを表示するだけではありません。

1つのインジケーターのみを強制する通常の方法は何ですか?

1
Nick Lemaire

まず、これを行う正当な理由があることを確認してください。人々はあなたがあなたの投稿で説明するようにアプリケーションが機能することを期待しています。個人的には気に入らないかもしれませんが。

しかし、あなたの質問に答えるために、それを行う最も簡単な方法の1つは、起動時にファイルを(たとえば、構成ディレクトリに)作成することです。これは、アプリケーションの終了時に削除します。アプリケーションを開始する前に、別のインスタンスがすでにアクティブであるかどうかをコードでチェックインし、アクティブである場合は直接終了します。アクティブなアプリケーションにも焦点を当てたい場合は、プロセス間通信を行う方法が必要です。たとえば、ソケットを介して。詳細は http://docs.python.org/library/ipc.html を参照してください。

2
Marten de Vries

私はもっ​​と良い解決策を見つけました(少し複雑ですが)。プロセスが実行されているかどうかを確認できるだけでなく、プロセスがすでに起動されている場合は、プロセスへの入力も提供できます。 このソリューション をチェックしてください。

2
dargad