Je suis nouveau dans la SNS, et j'ai besoin de savoir que dans le désinstallateur, comment je peux vérifier si l'application (qui est en C ++) est en cours d'exécution et fermez-la avant la désinstallation. P>
4 Réponses :
Selon l'application, vous avez quelques choix: P>
FindProcdll ne fonctionnera pas avec la dernière version de la SNSI à partir de ce commentaire, 2.46, publié en 2009.
Une autre option est la suivante: EXECKWAIT Taskkill / im programme_Name / f code>
+1 pour FindWindow , car il est léger (pas de plugin, pas de syscalls directs ) et "fonctionne juste" pour des cas simples.
Utilisez le plug-in NSProcess. Téléchargez ici -> NSProcess où app_exe est le nom de votre application ... p> Le téléchargement vous dira également comment l'utiliser ... :) p> p>
Comment l'utiliser? Aussi simple que:
Qu'est-ce que $ R4 code> signifie?
Voici une version légèrement plus amicale pour utiliser NSProcess qui demande à l'application de fermer plutôt que de le mettre fin (la réponse de Owen) < Pré> xxx pré> p>
Assurez-vous simplement que la première chose à laquelle installer ou désinstaller est de supprimer tous les fichiers XYZ.TMP en% Temp (ou tout autre répertoire inscriptible de l'application) avant la course de boucle ci-dessous. Pas de plug-ins requis.
!macro IsRunning ExecWait "cmd /c for /f $\"tokens=1,2$\" %i in ('tasklist') do (if /i %i EQU xyz.exe fsutil file createnew $TEMP\xyz.tmp 0)" IfFileExists $TEMP\xyz.tmp 0 notRunning ;we have atleast one main window active MessageBox MB_OK|MB_ICONEXCLAMATION "XYZ is running. Please close all instances and retry." /SD IDOK Abort notRunning: !macroEnd