Bonjour,


J'ai plein d'ennuis avec la console windows.
(C'est bizarre, je m'attends à un ironique "non, t'es sûr ?" comme réponse ici...)

Le but est d'avoir une fenêtre de console qui ne s'ouvre que si on s'en sert (c'est à dire dès sa 1ere utilisation, qui peut d'ailleurs ne jamais arriver).
Pour ce faire, il ne faut pas utiliser une appli de type console, faute de quoi elle s'ouvrira, qu'on le veuille ou non.
J'utilise donc AllocConsole, que je n'appelle qu'au moment voulu.

Mais, si le programme a été lancé en ligne de commande, c'est à dire depuis cmd.exe, j'aimerais bien que ce soit dans cette fenêtre-ci que ça se passe.
On peut faire ça ainsi : AttachConsole(ATTACH_PARENT_PROCESS).
Et c'est là que tout part en sucette : le "prompt" revient dès que le programme est lancé, les sorties arrivent n'importe comment, et les entrées sont confondues avec des commandes tapées.

D'autre part, impossible d'attraper correctement ni le ctrl-c, ni le clic sur la fermeture : c'est détectable, mais ça tue l'appli !
Je n'ai pas non plus trouvé de truc pour afficher/effacer le curseur (enfin si, mais ça marche pas).
Et je ne vous parle pas d'essayer d'avoir deux fenêtres de console en même temps...

Avez-vous des solutions ?
J'en viens à envisager sérieusement d'écrire mon propre système d'entrée-sortie texte avec une fenêtre ouverte à la main !