Frage zu "Verstecken / Wiederherstellen der Konsole "



  • Hallo zusammen,

    ich versuche gerade C++ zu lernen und habe mir deshalb die FAQs angesehn und die interessanten ausprobiert.

    Nun habe ich aber eine Frage zur der FAQ "Verstecken / Wiederherstellen der Konsole"

    Versuche ich das Programm zu erstellen, meldet der Compiler die Fehlermeldung "'GetConsoleWindow': nichtdeklarierter Bezeichner".

    In der Hilfe stand, GetConsoleWindow sei in der Windos.h zu finden, das Includieren (komisches Wort, ist das so richtig?) von windos.h hat aber auch ncihts gebracht.

    Könnte mir vielleicht wer einen Tip geben?
    Danke schonmal



  • Nein, die Headerdatei heißt <windows.h>, dort sollte GetConsoleWindow() zu finden sein.

    Leider nur bei Win2000 und höher. Die Alternative für Windows, kleiner 2k findest du zur Zeit noch nicht in der FAQ - wohl aber hier: "Fehler" in FAQ.

    MfG SideWinder



  • Hi,

    ich hatte mich oben verschrieben bei <windows.h> verschrieben, im Quelltext hatte ich sie richtig angegeben.

    Ich benutze Windows 2000 trotzdem hat es nicht funktioniert.
    Ich habe mal das Programm (ist sehr klein und nur zum Testen) unten gepostet, ist daran vielleicht etwas falsch?

    #include <windows.h>
    #include <iostream.h>
    
    const bool HideConsole ()
    {
        return ( ShowWindow ( GetConsoleWindow () , SW_HIDE ) && true );
    }
    
    const bool ShowConsole ()
    {
        return ( ShowWindow ( GetConsoleWindow () , SW_SHOW ) && true );
    }
    
    void main()
    {
        cout << "...TEST..." << endl;
        HideConsole();
        cout << "Und weg ist Sie" << endl;  
        Sleep(500);
        ShowConsole();
        cout << "Wieder da" << endl;
        Sleep(500);
    }
    


  • Eigentlich nicht, bis auf diverse Kleinigkeiten: <iostream> statt <iostream.h>, dafür aber auch mit "using namespace std;". Desweiteren gibt main() int und nicht void zurück, aber das lässt dein Programm vorerst kalt.

    Versuch mal, während die Konsole versteckt ist, keinen Text auszugeben.

    MfG SideWinder



  • Hmm ok hab ich geändert ... aber wie du schon gesagt hast, ist das ja eigentlich für dieses Programm nicht so wichtig.

    Das Programm lässt sich erst gar nicht starten, da GetConsoleWindow immernoch als nichtdeklarierter Bezeichner angegeben wird.



  • Welchen Compiler benützt du, vielleicht unterstützt der GetConsoleWindow() nicht.

    Nimm dann trotzdem den Weg der im Link oben beschrieben wird!

    MfG SideWinder



  • Hi,

    ich habe VC++ aus einem Buch, ich werd dann mal die andere Version testen.

    ThX für die Mühe mit mir 😃



  • GetConsoleWindow funktioniert nur unter Windows 2000/XP -> deshalb nicht verwenden.

    willst du es trotzdem benutzen, musst du noch was definieren:

    #define _WIN32_WINNT 0x0500

    #include <windows.h>



  • @argh: Wurde eigentlich alles bereits gesagt. Noob++ soll es mit der Lösung aus dem Link versuchen!

    MfG SideWinder



  • boah, die GetConsoleHWND von Crax ist aber wirklich sehr sehr schlecht. Ich würd die lieber nicht benutzen. Was besseres kann ich im moment nicht bieten, aber so bitte nicht 😞 😞



  • Hi,

    geht ja immer noch weiter hier 😃
    Mit "#define _WIN32_WINNT 0x0500" funktioniert es jetzt,
    werde es aber trotzdem auch mal mit der anderen Mathode testen.

    @SideWinder: Vielleicht kannst du das mit #define .. noch zur FAQ dazuschreiben. Ich glaube dieser Thread hier hat jetzt ausgedient.

    cya und danke für die Hilfe



  • @<boah>
    Wie schön, dass du keine Ahnung hast. Das geht wunderbar. Allerdings würde ich deine Begründung, warum das so schlecht ist, gerne mal hören.



  • Jo, ich werden den FAQ-Thread heute überhaupt noch überarbeiten, da kommt dann für User < 2k auch noch der Link dazu.

    MfG SideWinder



  • Hi,

    mit der anderen Funktion geht es auch wunderbar, ich habe den Quelltext malk unten mitgepostet, falls ihn mal wer braucht.

    #include <windows.h>
    #include <iostream>
    using namespace std;
    
    #define MY_BUFSIZE 1024
    
    HWND GetConsoleHwnd()
    { 
       HWND hwndFound;
       char pszNewWindowTitle[MY_BUFSIZE]; 
       char pszOldWindowTitle [MY_BUFSIZE];                                   
    
       GetConsoleTitle(pszOldWindowTitle, MY_BUFSIZE);
    
       wsprintf(pszNewWindowTitle,"%d/%d",
                GetTickCount(),
                GetCurrentProcessId());
    
       SetConsoleTitle(pszNewWindowTitle);
    
       Sleep(40);
    
       hwndFound=FindWindow(NULL, pszNewWindowTitle);
    
       SetConsoleTitle(pszOldWindowTitle);
       return hwndFound;
    }
    
    int main()
    {
      HWND hWnd = GetConsoleHwnd();  
      ShowWindow(hWnd, SW_HIDE); //Versteckt die Konsole
    
      Sleep(2000);               //Restlicher Quelltext
    
      ShowWindow(hWnd, SW_SHOW); //Zeigt die Konsole wieder
      Sleep(2000);
    
      return 0;
    }
    

    Mit ShowWindow() können auch noch andere nette Sachen gemacht werden, es kann z.B. das Fenster minimiert oder maximiert werden.
    Die benötigten Änderungen stehen in der Hife 😃



  • Jetzt muss ich den Thread entgültig erneuern, auf SW_MINIMIZE und SW_MAXIMIZE hab ich ganz vergessen...

    MfG SideWinder



  • FAQ-Text erneuert.

    MfG SideWinder



  • Ich fühle mich vernachlässigt. Crax hat diese Funktion von mir kopiert, was er in seinem "Fehler in FAQ"-Thread auch angegeben hat. Ich will auch ein Dankeschön in der FAQ haben. 🙄



  • Sorry, wird sofort nachgeholt.

    MfG SideWinder


Anmelden zum Antworten