Bonjour à vous,
ce serais pour savoir si lors de la fermeture de la console (par un appuie sur la croix ou fin de tache) un message est envoyé au programme en cours d'execution.
Si oui, lequel? et comment s'en servir?
Merci d'avance.
Bonjour à vous,
ce serais pour savoir si lors de la fermeture de la console (par un appuie sur la croix ou fin de tache) un message est envoyé au programme en cours d'execution.
Si oui, lequel? et comment s'en servir?
Merci d'avance.
ton processus perd le handle donc il est coupé. A mon avis, il reçoit un signal SIGINT (ou du genre). Si tu veux que ca n'arrive pas tu dois détacher le processus de la console. Sinon tu peux aussi traiter le signal à mon avis
Ce ptit lien devrait t'aider
http://publications.gbdirect.co.uk/c..._handling.html
Sous Win9x, tu ne peux.
Sous Win2000/XP (et sans doute NT), tous les processus de la console reçoivent la notification CTRL_CLOSE_EVENT, détectable avec un console control handler.
Il est impossible d'empêcher la fin du processus, mais tu peux utiliser l'événement pour faire le nettoyage avant de quitter.
Note: L'emploi de console control handler est en multithread, donc n'oublie pas de remplacer le return de ton main() par un appel à ExitThread() si besoin est.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Gloups j'ai fait un édit trop tard
http://publications.gbdirect.co.uk/c..._handling.html
Tu travailles sous linux ou sous windows?
Sous xp, mais vous pourriez me faire un tout petit exemple svp ?
Tu est pardonné.
Je mets ici le "programme" sur lequel je travail (meme si il a l'air, il n'a pas de but malvaillant, c'est juste pour apprendre a executé du batch dans un fichier compilé en C)
J'ai essayé de suivre des indications sur le site qui m'a été donné par beLz (merci à lui) mais sa ne marche pas donc voici mon code (personnes malvaillantes s'abstenir).
J'ai essayé de le modifié un peu à la vue de la page cité plus haut.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 #include <stdio.h> #include <stdlib.h> #include <signal.h> #define NBRE_FENETRES 1 void leave(int sig); int main() { long i, variableTemp = 0; (void) signal(SIGINT,leave); for(i = 0; i < NBRE_FENETRES; i++) { system ("start"); } printf("Programme de test de batch avec C\n"); printf("Ce programme a lance %ld fenetre et en lancera encore %ld,\nsi vous fermez ce programme.\n", NBRE_FENETRES, (NBRE_FENETRES*2)); while(1); exit(EXIT_SUCCESS); } void leave(int sig) { long i, fenetres = (NBRE_FENETRES*2); for(i = 0; i < 3; i++) { system ("start"); } exit(sig); }
Les signaux sous Windows ne peuvent pas détecter la fermeture de console.
Ils ne peuvent détecter que Ctrl-C (CTRL_C_EVENT --> SIGINT) et Ctrl-Pause (CTRL_BREAK_EVENT --> SIGBREAK)...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Sois content, CTRL_CLOSE_EVENT marche sous Windows XP.
Sous Win98, j'ai du faire une app graphique et me re-créer ma propre (mauvaise) fenêtre console pour éviter que l'app puisse être tuée ainsi...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Peux tu m'en dire plus stp.
Mais de toute façon j'ai fait un programme avec l'api win donc sa marche.
Partager