2010-09-24 3 views
3

J'ai un programme d'installation dans lequel je voudrais m'assurer que mon application n'est pas en cours d'exécution. Si c'est le cas, je voudrais le fermer (ne pas le tuer, car l'application doit enregistrer des données à la sortie). Le problème supplémentaire est que la fenêtre de mon application est masquée (l'icône de la barre d'état est affichée à la place), donc Process.MainWindowHandle est toujours 0.Comment fermer (ne pas tuer) une autre application qui n'a pas de fenêtre visible? (C#)

Que puis-je faire pour signaler la fermeture de l'application? Puis-je envoyer un message directement à l'application (pas à la fenêtre)?

Votre aide sera grandement appréciée. Gregor

Répondre

1

Vous pouvez probablement demander à APP1 d'écouter un port spécifique et d'envoyer un message à ce port lorsque vous souhaitez fermer l'application. Alors APP2 doit être conscient des ports APP1 et quels paramètres de message il attend.

Vous pouvez aussi avoir une sorte de Message Queue (Windows a ou vous voudrez peut-être utiliser quelque chose comme SQL Service Broker) la mise en œuvre et ont un APP d'envoyer des messages à la file d'attente et l'autre lecture de la file d'attente

Vous pouvez également vérifier cela: http://msdn.microsoft.com/en-us/library/ms644950(VS.85).aspx

1

Vous pourriez probablement utiliser WINAPI pour trouver le handle de fenêtre (même s'il est caché) par le texte de classe ou de fenêtre. Ensuite, envoyez un message Windows à l'application pour le fermer.

http://support.microsoft.com/kb/178893

Questions connexes