Terminator?
uocram
Membre
Hello!
Connaitriez-vous une fonction permettant de quitter une tierce application, plus simple que :
Par exemple du type :
mais pour quitter.
Merci d'avance!
Connaitriez-vous une fonction permettant de quitter une tierce application, plus simple que :
<br />- (void)myQuitApplication:(NSString *)stringApp<br />{<br /> NSString *scriptString;<br /> <br /> scriptString = [NSString stringWithString:@"tell application \""];<br /> scriptString = [scriptString stringByAppendingString:stringApp];<br /> scriptString = [scriptString stringByAppendingString:@"\"\n quit\n end tell"];<br /> [self myExecuteAppleScript:scriptString];<br />}<br />
Par exemple du type :
[[NSWorkspace sharedWorkspace] launchApplication: stringApp];<br />
mais pour quitter.
Merci d'avance!
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
On la retrouve dans signal.h.
Si tu veux terminer une appli que tu as lancé via NSWorkSpace, alors tu peux récupérer le pid de l'appli via la notification NSWorkspaceWillLaunchApplicationNotification.
Sinon, via la méthode launchedApplications, tu peux aussi récupérer le pid de chaque appli lancée.
.
Attention car avec ça tu arrêtes sauvagement l'application sans lui permettre d'effectuer son petit ménage, proposer à l'utilisateur de sauvegarder un doc modifié etc ....
C'est peut-être ton but remarque.
euh... C'est kill (pid ,9) qui permet de tuer une appli sauvagement...
Fais un man kill pour connaitre les différents signaux qu'une appli unix peut recevoir (et ce qu'elle doit faire).
.
Génial ça
merci
Mon but n'est pas la sauvagerie >:D, mais quelques fois c'est nécessaire.
Je vais donc me plonger dans le man kill.
Mais comment récuperer le pid d'une application que l'on n'a pas lancé soi-même?
Un kill(pid,3) ne tue pas "sauvagement" au sens process Unix, mais pour une application Mac c'est un peu violent car il n'enverra pas un terminate à l'objet NSApplication pour autant. Bref comme le dit ClicCool l'utilisateur à intérêt d'avoir sauvegardé avant ! Â
l'exemple donne les détails sur tous les processus, après il faut simplement mettre un test pour récupérer celui qui nous intéresse..
je me sers aussi de cette méthode pour envoyer un signal SIGUSR1 à une appli de mon crû, qui le reçoit et ensuite effectue une action prédéterminée (par ex. relire un fichier de préférences)
Et en gros c ça qui est utilisé pour la fonction : "Forcer les applications à quitter ?"
SIGINT peut être intercepté par les applis pour se fermer plus proprement. mais ça ne concerne (pour autant que je sache) uniquement les soft plutôt unix, et pas les applis cocoa...
Pour la quitter en douceur avec une sorte de "Terminate", je peux faire comment ?