begin process at 2012 05 30 09:19:01
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

System

 > 

SetConsoleCtrlHandler() et CIN


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

SetConsoleCtrlHandler() et CIN

mercredi 10 octobre 2007 à 13:50:13 | SetConsoleCtrlHandler() et CIN

mystercoco

Bonjour, je développe un programme en ligne de commande, pour empecher l'utilisateur d'appuyer sur CTRL-C, j'utilise SetConsoleCtrlHandler() qui récupére CTRL_C_EVENT. L'évenement est bien capté par le programme, mais le fichier stdin est fermé lors de la combinaison CTRL-C. Il m'est donc impossible de récupérer des entrées claviers delors qu'un ctrl-c est effectué, j'aimerais que cette combinaison soit tout simplement anhilé. Voici le bout de code : [CODE] BOOL CtrlHandler(DWORD action) { if (action==CTRL_C_EVENT ||action==CTRL_BREAK_EVENT) { char buf[50]; if (!(std::cin>>buf)) std::cout<<"erreur cin"; } return TRUE; } [/CODE] Dans le main : [CODE]SetConsoleCtrlHandler((PHANDLER_ROUTINE) CtrlHandler, TRUE);[/CODE] erreur cin est afficher lors du CTRL-C. Merci
lundi 15 octobre 2007 à 19:26:00 | Re : SetConsoleCtrlHandler() et CIN

mystercoco

Réponse acceptée !
Le problème a été résolu grace à la méthode SetConsoleMode() plutot que SetConsoleCtrlHandler(). En effet cette dernière envoyée le signal lorsqu'il était trop tard (close signal). Voici une classe que j'ai écrit qui permet de simplifier les saisi claviers de ctrl... [CODE] #include #include #include class hardio //class inline d'entrée de données { private: DWORD mode; //mode initial DWORD nmode; //mode modifié HANDLE console; //Handle de la console char test[BUFSIZ]; //tampon mémoire DWORD bufs; //nombre de caractères lu public: hardio() { static int instance=0; if (instance>0) throw "Instance multiple"; //on interdit les instances multiples else instance++; console=GetStdHandle(STD_INPUT_HANDLE); //on récupère le HANDLE GetConsoleMode (console, &mode); //on récupère le mode nmode=mode & ~ENABLE_PROCESSED_INPUT; //on calcul le nouveau mode } ~hardio() { SetConsoleMode (console,mode); //remise à défaut du mode; } friend std::string operator >> (hardio h, std::string& s) { SetConsoleMode (h.console, h.nmode); //on change le mode console ReadConsole(h.console,h.test,BUFSIZ,&(h.bufs),NULL); //on charge le buffer clavier std::cout<>chaine; [/CODE] ps: merci pour la réponse mais je suis parti sur une autre piste (l'erreur étant un peu inhabituelle)


Cette discussion est classée dans : ctrl, code, event, cin, setconsolectrlhandler


Répondre à ce message

Sujets en rapport avec ce message

Probleme avec GTK et le code touche [ par Vamps ] Bonjour,En faite je veut en utilisant un switch que le programme reagisse a differente touche, en loccurance ici la touche ENTRER regarder le code :gb Probleme avec VK_.... ( balayage clavier ) [ par morgandetoi06 ] voila j aimerait simuler l appui des touches "alt" + "="mais je ne trouve pas le code de la touche "="( elle est située à gauche du backspace )voila l simulation ctrl + alt + suppr - ne fonctione pas [ par baby3378 ] bonjour à tous, voila mon programme : //********************************début prog******************************* #include #include #include in pobleme avec keybd_event [ par thejrem ] bonjour j'ai un projet MFC sous visual et mon code marchant sur un projet console marche une fois sur 4 dans une MFC quelqu'un a une iddée ce code s Bonjour comment bloquer CTRL_CLOSE_EVENT [ par budo ] j'ai utiliser BOOL WINAPI ConsoleHandler(DWORD CEvent){ char mesg[128]; switch(CEvent) { case CTRL_C_EVENT: break; case CTRL_BR Comment avoir le "EOF" sans taper ctrl d?? [ par fatfat692675 ] Bonsoir tout le monde!!J'ai un petit problème que j'essaie de résoudre en vain: je veux écrire un code en C qui fait la meme chose que ctrl d.En fait, SDL conditions affichage image [ par MattCand ] Bonjour à tous, je suis débutant je cherche un code SDL qui, pour un paramètre donné, va afficher la bonne image. Je me suis basé sur le code SDL de b Probleme avec la librairie sdl et code::blocks [ par BencoAndCo ] Bonjour, J'ai un problème avec la lib sdl et code::blocks quand je compile le prog suivant : #include #include #include int main(int argc, ch Build Error avec Dev-Cpp + SDL [ par Rouliann ] Salut tout le monde!Alors voila le probleme, g tapé un code tt simple en C++ avec la SDL et le compilateur me dit : C:\Dev-Cpp\...\Makefile.win [Build [LINUX/C/GTK]Au sujet des events, pour un demineur en gtk [ par pas2pseudo ] b'soir j'ai donc un chtit probleme j'explique quand je click (gauche ou droit) sur un bouton je veux recupurer dans ma fonction de callback la coordon


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,374 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales