INFO : éviter la fenêtre de console de disparaître

Traductions disponibles Traductions disponibles
Numéro d'article: 99115 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Résumé

Lorsqu'une application de console est démarrée soit de l'Explorateur Windows NT File Manager, responsable de programme, ou en tapant début <progname>à partir de l'invite de commande, il exécute dans son propre console. Cette console disparaît dès que l'application s'arrête et par conséquent l'utilisateur ne peut pas lire tout écrits dans l'écran entre le dernier suspendre et le programme quitter. Il existe deux approches pour empêcher la fenêtre de console de disparaître.

Plus d'informations

Méthode 1: interrompre si l'exécution du processus dans différents console

La première méthode consiste pour implémenter une application console pour ne pas terminer immédiatement lorsqu'elle s'exécute dans une fenêtre de console distincts. Il n'est pas probable est qu'une application pour toujours suspendre après l'affichage d'informations dans la fenêtre de console lorsque vous avez démarré à partir de l'invite. Cependant, il n'existe aucune API (application programming interface) qui détermine directement ou non l'application partage une console avec cmd.exe. Cette méthode recherche à l'emplacement actuel du curseur de la console, et si elle est (0,0), puis le programme suppose qu'il s'exécute dans une fenêtre de console distincts.

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 ne fonctionnera pas si l'utilisateur combine un écran clair (CLS) et l'exécution de l'application en une étape (for example, CLS [C:\] & <progname>), car vous placez le curseur est être (0, 0), mais l'application utilise la console, qui appartient à cmd.exe.

Méthode 2: démarrer la console avec cmd.exe /K

Cette méthode est du démarrage d'une application de console dans une fenêtre séparée et de forcer la fenêtre pour restent après que l'application a terminé. 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 terminée, le commutateur /K permet de la fenêtre de console restent sur l'écran. L'utilisateur d'application pouvez ensuite taper la commande exit pour fermer la fenêtre de console.

Propriétés

Numéro d'article: 99115 - Dernière mise à jour: mardi 21 novembre 2006 - Version: 4.1
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Win32 Application Programming Interface sur le système suivant
    • Microsoft Windows NT Advanced Server 3.1
    • Microsoft Windows NT 4.0
    • Microsoft Windows NT 3.51 Service Pack 5
    • Microsoft Windows NT 4.0
    • the operating system: Microsoft Windows 2000
    • the operating system: Microsoft Windows XP
Mots-clés : 
kbmt kbconsole kbinfo kbkernbase kbprogramming KB99115 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 99115
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com