INFO : Empêche la fenêtre de Console de disparition

Résumé

Lorsqu’une application de console est démarrée à partir du Gestionnaire de fichiers, le Gestionnaire de programmes, Windows NT Explorer, soit en tapant Démarrer < progname > à partir de l’invite de commande, il s’exécute dans sa propre console. Cette console disparaît dès que l’application s’arrête, et par conséquent, l’utilisateur ne peut pas lire tous les messages écrits à l’écran entre la dernière pause et sortie de programme. Il existe deux approches pour maintenir la fenêtre de console de disparaître.

Plus d'informations

Méthode 1 : Pause si le processus est en cours d’exécution dans une Console distincte

La première méthode consiste pour l’implémentation d’une application console se termine ne pas immédiatement lorsqu’il s’exécute dans une fenêtre de console distincte. Il n’est pas probable que vous pouvez toujours mettre en pause après l’affichage d’informations dans la fenêtre de la console lorsque vous avez démarré à partir de l’invite d’une application. Toutefois, il n’existe aucune API (interface de programmation d’application) qui détermine directement ou non de l’application partage une console avec CMD. EXE Cette méthode ressemble à l’emplacement actuel du curseur console, et s’il est (0,0), le programme considère ensuite qu’il s’exécute dans une fenêtre de console distincte.

Exemple de Code

   #include <windows.h>   #include <stdio.h>
#include <conio.h>

CONSOLE_SCREEN_BUFFER_INFO csbi;
HANDLE hStdOutput;
BOOL bUsePause;

void main(void)
{
hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
if (!GetConsoleScreenBufferInfo(hStdOutput, &csbi))
{
printf("GetConsoleScreenBufferInfo failed: %d\n", GetLastError());
return;
}

// if cursor position is (0,0) then use pause
bUsePause = ((!csbi.dwCursorPosition.X) &&
(!csbi.dwCursorPosition.Y));

printf("Interesting information to read.\n");
printf("More interesting information to read.\n");

// only pause if running in separate console window.
if (bUsePause)
{
int ch;
printf("\n\tPress any key to exit...\n");
ch = getch();
}
}

REMARQUE : Cette méthode fonctionnera pas si l’utilisateur combine un écran clair (CLS), et l’exécution de l’application en une seule étape (par exemple, [C:\] CLS & < progname >), étant donné que la position du curseur va être (0, 0), mais l’application à l’aide de la console, qui appartient au CMD. EXE

Méthode 2 : Démarrage de la console avec cmd.exe /K

Cette méthode est pour le démarrage d’une application de console dans une fenêtre séparée et forcer la fenêtre reste après l’arrêt de l’application. Une application peut utiliser la ligne de commande suivante avec WinExec(), CreateProcess(), ou dans un fichier de commandes :
CMD /K consoleapp.exe
Une fois consoleapp.exe a terminé, le commutateur /K rend la fenêtre de la console reste affiché à l’écran. L’application utilisateur peut alors taper la commande exitpour fermer la fenêtre de console.
Propriétés

ID d'article : 99115 - Dernière mise à jour : 12 janv. 2017 - Révision : 1

Commentaires