INFO: Verhindert das Konsolenfenster aus verschwindet

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 99115 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Wenn eine Konsolenanwendung entweder aus dem Datei-Manager den Programm-Manager, Windows NT Explorer oder durch Eingabe von <progname> Start gestartet wird an der Eingabeaufforderung es in Ihrer eigenen Konsole ausgeführt. Diese Konsole verschwindet, sobald die Anwendung beendet wird und daher nicht der Benutzer nichts auf dem Bildschirm zwischen dem letzten anhalten und Programm beenden ausgegeben lesen kann. Es gibt zwei Ansätze zum verhindern, dass des Konsolenfensters verschwindet.

Weitere Informationen

Methode 1: Halten Sie an, wenn der Prozess in separaten Konsole ausgeführt wird

Die erste Methode ist für die Implementierung einer Konsolenanwendung Beenden nicht sofort, wenn er in einem separaten Konsolenfenster ausgeführt wird. Es ist unwahrscheinlich, dass eine Anwendung immer nach Informationen im Konsolenfenster anzeigen, wenn Sie an der Eingabeaufforderung gestartet anhalten möchten. Es ist jedoch-keine API (Application programming Interface, die direkt bestimmt, ob die Anwendung eine Konsole mit cmd.exe teilt). Diese Methode sucht nach der aktuellen Position des Cursors Konsole, und wenn es (0,0) ist, dann das Programm geht es in eine separate Konsolenfenster ausgeführt wird.

Beispielcode

   #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();
      }
   }
				
Hinweis: Diese Methode funktioniert nicht, wenn der Benutzer einen klaren Bildschirm (CLS) kombiniert und Ausführung der Anwendung in eine Schritt (for example, [C:\] CLS & <progname>), da der Cursor zu positionieren, wird sein (0, 0), aber die Anwendung wird mithilfe der Konsole, cmd.exe gehört.

Methode 2: Starten die Konsole mit cmd.exe/k

Diese Methode ist für eine Konsolenanwendung in einem separaten Fenster starten und erzwingen das Fenster bleiben, nachdem die Anwendung beendet wurde. Eine Anwendung kann mit WinExec() CreateProcess(), oder in einer Batchdatei die folgende Befehlszeile verwenden:
Cmd/k consoleapp.exe
Nach consoleapp.exe beendet wurde, stellt die Option/k im Konsolenfenster auf dem Bildschirm verbleiben. Benutzer der Anwendung kann dann den Befehl Beenden , um das Konsolenfenster schließen eingeben.

Eigenschaften

Artikel-ID: 99115 - Geändert am: Dienstag, 21. November 2006 - Version: 4.1
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Win32 Application Programming Interface, wenn verwendet mit:
    • 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
Keywords: 
kbmt kbconsole kbinfo kbkernbase kbprogramming KB99115 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 99115
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

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