mikrocontroller.net

Forum: PC-Programmierung Konsolenanwendung einmal ganz genau


Autor: Patrick O. (sir-patrick)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo an alle!

Ich würd ja nicht fragen, wenn ich nicht der Meinung wäre, dass es 
wirklich was neues ist. Fasst jeder von euch hat doch bereits eine 
Konsolenanwendung programmiert. Doch anders als bei Programmen, bei 
denen man ein Fenster und ähnliches hart selbst programmieren muss, 
scheint dies bei Konsolenanwendungen nicht der Fall sein zu müssen. Ich 
möchte nun wissen, wo der große Unterschied zwischen Konsolenanwendungen 
und dem Rest liegt, und welche Arbeit mir der Compiler oder die IDE beim 
Erstellen einer Konsolenanwendung abnimmt.

Mit freundlichen Grüßen

       Patrick O.

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Patrick O. wrote:
> Doch anders als bei Programmen, bei
> denen man ein Fenster und ähnliches hart selbst programmieren muss,
> scheint dies bei Konsolenanwendungen nicht der Fall sein zu müssen.

Bei einer Konsolenanwendung muss man sich nie um die Programmierung 
irgendwelcher Fenster kümmern. Aber nicht, weil es einem abgenommen 
wird, sondern weil eine Konsolenanwendung einfach keine Fenster hat. Sie 
läuft auf/in einer Text-Konsole (daher der Name).

Autor: Gerd Gerd (gege)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
.. ausser man benutzt die Cursor-Steuerbefehle und versetzt den Cursor 
um ein textbasiertes Grafikfenster zu haben

GRuß

Gerd.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ich möchte nun wissen, wo der große Unterschied zwischen
> Konsolenanwendungen und dem Rest liegt,

Das hängt vom System ab. Unter Linux gibt es z.B. keinen Unterschied. 
Unter Windows dagegen schon, da die Konsolenausgabe hier nicht einfach 
in ein virtuelles Terminal geleitet wird, sondern das Programm selbst 
ein Konsolen-Fenster aufmachen muß.

> und welche Arbeit mir der Compiler oder die IDE beim Erstellen einer
> Konsolenanwendung abnimmt.

Die IDE hat eigentlich nicht viel damit zu tun. Wenn's um Windows gehen 
sollte, so nimmt dir der Compiler das Erzeugen des Konsolenfensters und 
Umleiten der Standard-Ein- und -Ausgabe ab.

Autor: Patrick O. (sir-patrick)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Initiator nochmal

Wie gehts?

Ich hätte da noch ne Frage. Kann es sein, dass es in ner dll von Windows 
ne Funktion gibt, die ein Konsolenfenster für den momentanen Prozess zur 
Verfügung stellt?

Auf wiederlesen

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Kann es sein, dass es in ner dll von Windows ne Funktion gibt, die ein
> Konsolenfenster für den momentanen Prozess zur Verfügung stellt?

Ja, das kann sein.

Autor: Tobi H. (tobi-) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
AllocConsole() ?

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine Windows-Konsolanwendung hat keine Message-Queue und kann daher 
keine Windowsmessages empfangen. Sie unterscheidet sich nicht 
prinzipiell von einer Anwendung, wie man sie früher für DOS schrieb - 
das verfügt über keinerlei Window-Funktionalität.

Man kann unter Windows sogar noch das alte DOS-API verwenden und 
.com-Programme schreiben - primitiver gings auch zu DOS-Zeiten nicht...

Das Konsolfenster, das sich beim Start einer Konsol-App öffnet, wird von 
Windows bereitgestellt.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Sie unterscheidet sich nicht
> prinzipiell von einer Anwendung, wie man sie früher für
> DOS schrieb - das verfügt über keinerlei Window-Funktionalität.

Nicht ganz. Einerseits kann eine Win32-Konsolenapplikation die Win32-API 
verwenden, was doch ein kleines bisschen andere Möglichkeiten bietet, 
andererseits kann eine Win32-Konsolenapplikation durchaus auch mit 
Windows-Fenstern zusammenarbeiten, am simpelsten geht das beispielsweise 
mit MessageBox(), aber auch das Senden von Nachrichten an andere Fenster 
ist möglich. Ebenso kann eine Konsolenapplikation nachträglich einen 
Nachrichtenhandler installieren und dann auf "normale" Art und Weise mit 
Fenstern hantieren.

Autor: Patrick O. (sir-patrick)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wird das Konsolenfenster also vom Betriebssystemgeöffnet, nachdem oder 
bevor es den Portable Executable Kopf der anwednung durchgegangen is?

Aber woher weiß das BS nun, dass es das dann doch nicht öffnen muss? Zum 
Beispiel bei ner Fensteranwendung.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das wird durch Flags im PE Header entschieden, wie

 IMAGE_SUBSYSTEM_WINDOWS_GUI

und

 IMAGE_SUBSYSTEM_WINDOWS_CUI.

Damit ist also auch klar, daß das Konsolenfenster erst nach 
Interpretation der Flags geöffnet/erzeugt oder beibehalten wird.

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rufus t. Firefly wrote:
> Damit ist also auch klar, daß das Konsolenfenster erst /nach/
> Interpretation der Flags geöffnet/erzeugt oder beibehalten wird.

Allerdings wird das festgestellt, bevor die Applikation zum ersten mal 
die Kontrolle erhält.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, eindeutig.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.