Seite 1 von 1

Re: Zeilen und Spalten in der Konsole

Verfasst: 6. Juli 2012 15:28
von trendyAndy
Hallo Fiend,

du kannst mit QProcess ein cmd Fenster (oder unter Linux ein Shell) auf machen. Dann theoretisch dort den Befehl MODE ausführen und das Konsolenfenster einlesen.
Da kommt zum Beispiel bei mir 25 Zeilen und 80 Spalten raus. Dann kannst du auch das Shell größer machen in dem du dort MODE 100,80 rein schreibst oder so.
Beispiel:

Code: Alles auswählen

 QStringList arguments;
   /* Um die hilfe aufzurufen einfach in den Eingabeaufforderungen cmd.exe /? eingeben
    CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF]
        [[/S] [/C | /K] Zeichenfolge]

    /C      Führt den Befehl in der Zeichenfolge aus und endet dann.
    /K      Führt den Befehl in der Zeichenfolge aus und endet dann nicht.
    /S      Bestimmt Behandlung von Zeichenfolgen nach /C oder /K (siehe unten).
    /Q      Schaltet die Befehlsanzeige aus.
    /D      Deaktiviert die Ausführung von AutoRun-Befehlen von der Registrierung.
    /A      Ausgabe interner Befehle in eine Pipe oder Datei im ANSI-Format.
    /U      Ausgabe interner Befehle in eine Pipe oder Datei im UNICODE-Format.
    /T:fg   Legt die Hinter-/Vordergrundfarben fest (siehe auch COLOR /?).
    /E:ON   Aktiviert Befehlserweiterungen (siehe unten).
    /E:OFF  Deaktiviert Befehlserweiterungen (siehe unten).
    /F:ON   Aktiviert die Ergänzung von Datei- und Verzeichnisnamen.
    /F:OFF  Deaktiviert die Ergänzung von Datei- und Verzeichnisnamen.
    /V:ON   Aktiviert verzögerte Erweiterung von Variablen, ! wird dabei als
            Trennzeichen verwendet. Zum Beispiel wird mit /V:ON die Variable
            !var! zur Ausführungszeit erweitert. Im Gegensatz dazu wird bei
            Verwendung der Syntax var die Variable zum Zeitpunkt der Eingabe
            aufgelöst (Diese Werte können z.B. in einer FOR-Schleife
            unterschiedlich sein!).
    /V:OFF  Deaktiviert die verzögerte Erweiterung von Variablen.*/

    arguments << "/K" << "MODE 100,100 \n" ;
   QProcess p;
   p.startDetached("cmd.exe", arguments);
Ergebnis ist ein geöffnetes cmd Fenster mit der entsprechenden Größe.
Aber ob dich das weiter bringt??

Gruß
Andy

Re: Zeilen und Spalten in der Konsole

Verfasst: 9. Juli 2012 13:42
von trendyAndy
Hallo Fiend,

man kann nur was in das cmd schreiben und lesen wenn man den Process nicht detached() startet. Leider ist das so, ich dacht das geht auch.
Ich habe in meinem Programm den QProcess mit p.start() gestartet und führe dort diverse Befehle aus und lese am Ende wieder alles in ein QTextEdit ein für die Anzeige.

Aber warum nicht alles aus der registry auslesen:

Code: Alles auswählen

 QSettings s("HKEY_CURRENT_USER\\Console\\%SystemRoot%_system32_cmd.exe", QSettings::NativeFormat);
    int FontSize = s.value("FontSize").toInt();
    QString FontSizeHex = QString("0x%1").arg(FontSize, 0,16);
    //ergibt 0xc0008 für 12Pixel hoch 8Pixel breit
    int WindowSize = s.value("WindowSize").toInt();
    QString WindowSizeHex = QString("0x%1").arg(WindowSize, 0,16);
    //ergibt 0x190050 für Fenstergröße 80x25
Wäre das was?

Gruß
Andy