Page 1 sur 1

[Résolu] Détection fermeture console

Publié : dim. 08/juil./2012 19:41
par Robrock55
Bonjour à tous !

Dans le cadre d'un jeu en réseau, je génère une console coté serveur pour y répertorier toutes les actions, de la même manière que pour Minecraft.

Or voici le problème, si je ferme la console à la main, par la petit croix, fin du programme. Or, j'aimerais le cas échéant exécuter quelques instructions notamment l'envoie d'un message aux clients.

A première vue, impossible de base dans PureBasic. Je cherche donc une combin, ou éventuellement un code avec les API de Windows, bref. HELP :)

Re: Détection fermeture console

Publié : dim. 08/juil./2012 19:55
par Kwai chang caine
Code du grand SPARKIE :wink:

Code : Tout sélectionner

Global exit = #False 

Procedure HandlerRoutine(msg) 
 exit = #True
 ProcedureReturn exit 
 EndProcedure 
 
OpenConsole() 
SetConsoleCtrlHandler_(@HandlerRoutine(), 1) 

Repeat 
 Delay(250) 
 
Until Inkey() = Chr(27) Or exit

SetConsoleCtrlHandler_(@HandlerRoutine(), 0) 

If Exit
  Debug "Console fermée"
 EndIf
 
End

Re: Détection fermeture console

Publié : dim. 08/juil./2012 20:05
par Robrock55
Génialissime ! Merci !
Puis-je oser demander une explication ? Surtout ce SetConsoleCtrlHandler_() ? D'où sort cette fonction ? Rapidement sur internet, j'ai vu que c'était une fonction C++ =O

Re: Détection fermeture console

Publié : dim. 08/juil./2012 20:39
par Backup
en Purebasic les API window s'appel avec leur nom suivi de "_"
SetConsoleCtrlHandler_() ; est en fait : SetConsoleCtrlHandler() ; qui est une API window
http://msdn.microsoft.com/en-us/library ... 85%29.aspx


utilisé aussi en C++ et d'autres langages

Re: Détection fermeture console

Publié : dim. 08/juil./2012 20:50
par Robrock55
Merci de la réponse !
Je vais tacher de décoder la doc que tu m'as fourni Dobro.
Merci à vous, je le redirais à chaque fois, mais cette communauté est quand même incroyablement rapide et efficace ! :D