J'ai une application Windows C ++ (App.exe). Lorsque l'application est fermée, j'ai besoin d'effectuer des tâches de nettoyage spécifiques à mon application. Que se passe-t-il lorsque ce processus (App.exe) est tué via le gestionnaire de tâches. En supposant que l'application soit toujours réactive, puis-je gérer en quelque sorte cette situation dans mon app.exe? P>
Je cherche quelque chose de similaire à la manière dont Kill
3 Réponses :
Je pense que vous aurez besoin d'un autre PID qui surveillait le PID de votre App.exe et le fonctionnement nécessaire à l'époque. P>
Il existe deux façons de tuer l'application dans le gestionnaire de tâches. P>
sigterm code>. L'application peut l'intercepter et faire plus de traitement, car elle envoie essentiellement un message "Fermer la fenêtre". Message à attraper est wm_close code>. Li>
- Tuer à travers processus i> onglet serait d'environ un équivalent de
SIGKILL code>. Vous ne pouvez rien faire pour intercepter cela, à compter de la surveillance des actions de l'utilisateur dans le bouton Listebox et de processus de fin de tâche, ou d'avoir un processus de surveillance qui verra lorsque le premier est tué. Li>
ul>
Alternativement, concevez l'application d'une manière qui ne nécessite pas de nettoyage ou de manière à effectuer le nettoyage au démarrage. P>
Malheureusement, je ne peux pas repousser l'application. C'est une application héritée de 10 ans avec plusieurs milliers de lignes de code.
Remarque, googlers: il n'y a pas de wm_close code> dans une application de console, cependant. Vous devez appeler setConsolectrlhandler code> pour enregistrer votre gestionnaire pour traiter ctrl_close_event code> pour la fermeture (c'est-à-dire "sigterm").
Cela dépend, si l'utilisateur choisit de "tâche finale", votre application vous sera informée et vous pouvez le gérer Voir ceci. P>
Mais si l'utilisateur choisit de mettre fin au processus, vous n'avez aucun moyen de le gérer dans votre application. Le moyen le plus simple serait un deuxième processus ou vous pouvez injecter dans le gestionnaire de processus et accrocher l'API de procédure de traitement. P>