Envoyé par
CTJayce
Si c'est faisable, tu peux utiliser une boucle de message et/ou définir
ta propre fonction de capture des signaux console.
(conf SetConsoleCtrlHandler() + HandlerRoutine callback )
La boucle de message n'attrapera pas ses messages, juste les miens. Je n'ai que le HWND, aucun moyen d'attraper les messages. Je le répète, la fenêtre de console est gérée par un autre process (en l'occurrence conhost.exe).
Pour s'en convaincre, essayer ceci :
oldproc = (WNDPROC) SetWindowLong(GetConsoleWindow(), GWL_WNDPROC, (LONG) wndproc);
Ben oui, ça renvoie 0. Ce serait trop facile.
Quant à la fonction de capture, ce n'est pas une windows proc... Je peux savoir si on clique le bouton de fermeture avec CTRL_CLOSE_EVENT mais dès que je sors de la fonction, ça ferme tout sans rémission.
Donc non, désolé, ce n'est pas faisable.
Envoyé par
CTJayce
Normal, t'as construit ton programme comme étant une appli gui.
Obligé : si c'est une appli console il ouvre une fenêtre de console qu'on le veuille ou non. Et bien sûr on a largement le temps de la voir s'afficher même si on la ferme tout de suite. Berk, je ne veux pas de ça.
Envoyé par
CTJayce
Quand tu le lances depuis l'interpréteur cmd, ce dernier n'attend
pas la fin de son exécution, d'où l'accès concourant à la console.
Ouais, ben c'était pas une très bonne idée de leur part...
Envoyé par
CTJayce
Pour y remédier, il faut utiliser la commande start "" /wait pour
forcer l'attente.
Je ne veux pas forcément obliger l'utilisateur du programme à faire ça
Partager