2010-07-28 9 views
3

Comment puis-je forcer une application, par exemple myapp.exe, à fermer en utilisant C++ sur Windows CE à partir d'une application différente?Force l'application à fermer sur Windows CE en utilisant C++

Le scénario est que j'ai une installation précédente de certains logiciels qui ne se comportent pas correctement lors de la mise à niveau vers une nouvelle version. J'ai donc besoin de tuer un processus (à partir du programme de mise à jour) avant de continuer la mise à jour.

Répondre

2

TerminateProcess? (MSDN)

BOOL TerminateProcess(HANDLE hProcess, 
         DWORD uExitCode); 

Vous aurez besoin du HANDLE au processus que vous pouvez facilement obtenir en utilisant les API Toolhelp32. Un exemple de leur utilisation pour énumérer tous les processus sur le système peut être trouvé here.

0

Je pense que ExitProcess est une approche plus systématique que TerminateProcess. ExitProcess fournit un arrêt de processus propre où TerminateProcess quitte le processus sans condition. Syntaxe pour ExitProcess:

VOID ExitProcess(
    UINT uExitCode 
); 

Pour plus d'informations s'il vous plaît visitez this lien.

Cela dépend totalement de votre application comment elle veut quitter.

+0

D'accord, mais la question était de forcer une fermeture d'application. ExitProcess peut ne pas le couper si l'application ne se comporte pas. De plus, je ne pense pas que ExitProcess puisse être utilisé sur un processus différent. – Konrad

+0

Oui, il faut travailler sur un processus différent – Chris

+0

qui est ce que mon dernier énoncé signifie, cela dépend de l'application à l'application Yep..pour un processus différent TerminateProcess fera l'affaire. – user001

0

La première chose à faire est de lui envoyer un WM_QUIT pour voir s'il peut fermer normalement. WM_QUIT doit provoquer la sortie de la boucle de pompage de message de l'application et se terminer par la suite. Cela devrait permettre à l'application de nettoyer ses ressources proprement.

Si cela échoue, (et seulement après elle échoue), vous pouvez utiliser le toolhelp APIs pour trouver le processus (créer un instantané à l'aide NOHEAPS, itérer puis de le trouver avec les Premières/Appels suivants) et mettre fin à l'aide de T erminateProcess.

Questions connexes