web-dev-qa-db-fra.com

Comment forcer une seule instance de ma demande?

Je développe un programme en utilisant rapidement. J'utilise un indicateur qui peut masquer/afficher la fenêtre principale.

Mais lorsque je lance l'application à partir du lanceur, il démarre une nouvelle instance de cette application (un indicateur supplémentaire s'affichera donc). Plutôt que de simplement afficher la fenêtre principale de l'application en cours d'exécution précédente.

Quelle est la manière habituelle de forcer un seul indicateur?

1
Nick Lemaire

Tout d'abord, assurez-vous d'avoir une bonne raison de le faire. Les gens s'attendent à ce que les applications fonctionnent comme vous le décrivez dans votre message. Même si vous ne l'aimez peut-être pas personnellement.

Mais, pour répondre à votre question, l'une des façons les plus simples de le faire est de créer un fichier (par exemple dans le répertoire de configuration) au démarrage, que vous supprimez lorsque votre application se ferme. Avant de démarrer l'application, vous vérifiez dans votre code si une autre instance est déjà active, et si c'est le cas, vous quittez directement. Si vous souhaitez également concentrer l'application active, vous avez besoin d'un moyen de faire la communication inter-processus. Par exemple via une prise. Voir http://docs.python.org/library/ipc.html pour plus d'informations.

2
Marten de Vries

J'ai trouvé une solution encore meilleure (un peu plus compliquée cependant). Vous pouvez non seulement vérifier si votre processus est en cours d'exécution, mais également lui fournir des informations s'il est déjà lancé. Veuillez vérifier cette solution .

2
dargad