(WinAPI) Versteckte Konsole



  • Hallo,
    ich habe folgendes Problem, wenn ich den Code aus dem FAQ zum Verstecken bzw. Anzeigen der Konsole verwende erscheint immer der Fehler, dass er die Methode "GetConsoleWindow" nicht kennt.

    #include <iostream>
    #include <windows.h>
    
    using namespace std;
    
    const bool HideConsole()
    {
        return(ShowWindow(GetConsoleWindow(), SW_HIDE) && true);
    }
    
    const bool ShowConsole()
    {
        return(ShowWindow(GetConsoleWindow(), SW_SHOW) && true);
    }
    
    int main()
    {
        cout << "Hello World!\n";
        Sleep(1000);
    
        HideConsole();
        Sleep(1000);
        ShowConsole();
    
        cout << "Hello again!";
        Sleep(1000);
    
        return 0;
    }
    

    --------------Konfiguration: Versteckte Konsole - Win32 Debug---------
    Kompilierung läuft...
    main.cpp
    ...\projekte\versteckte konsole\main.cpp(8) : error C2065: 'GetConsoleWindow' : nichtdeklarierter Bezeichner
    Fehler beim Ausführen von cl.exe.

    Versteckte Konsole.exe - 1 Fehler, 0 Warnung(en)

    Muss man vielleicht eine bestimmte Header einbinden?
    In der MSDN kann ich den Befehl auch nicht finden.

    Hoffe ihr könnt mir helfen.

    Tschau Gartenzwerg



  • diese HideConsole() Funktion ist totaler Quatsch, ruf einfach FreeConsole() auf



  • ...denn GetConsoleWindow erst ab Windows 2000. Wenn du's trotzdem benutzen willst:

    #define _WIN32_WINNT 0x0500

    #include <windows.h>



  • FreeConsole() entfernt die Konsole ganz aus dem Prozess. Was imho wenig bringt, da er sie vielleicht nur verstecken will aber noch mit ihr arbeiten will.

    <windows.h> muss includiert sein.

    MfG SideWinder



  • hallo,
    ja ich will sie verstecken, doch trotzdem weiter mit ihr arbeiten.
    Die <windows.h> ist schon eingebunden gewesen und es funzt trotzdem nicht. Auch mit dem von <blah> vorgeschlagenem

    #define _WIN32_WINNT 0x0500 lässt es sich nicht compilieren? 😡

    Liegt das am BS(Windows ME) oder mach ich da noch etwas falsch?😕

    Tschau Gartenzwerg



  • Liegt am BS:

    Auszug aus der MSDN:

    Remarks
    To compile an application that uses this function, define the _WIN32_WINNT macro as 0x0500 or later. For more information, see Using the SDK Headers.

    Requirements
    Windows NT/2000/XP: Included in Windows 2000 and later.
    Windows 95/98/Me: Unsupported.
    Header: Declared in Wincon.h; include Windows.h.
    Library: Use Kernel32.lib.

    Unter Win2000 funktioniert der Code einwandfrei.

    mfg



  • Hallo,
    danke erstmal aber gibt es den nicht eine andere Möglichkeit für das Verstecken der Konsole unter Windows ME?

    Tschau Gartenzwerg



  • Das Problem ist die Funktion GetConsoleWindow(). Also müssen wir sie in irgendeiner Form ersetzen.

    Ich versuch mal etwas:

    TCHAR Title [256];
    
    GetConsoleTitle ( Title , sizeof ( Title ) );
    ShowWindow ( FindWindow ( XXX , Title ) , SW_HIDE );
    

    Allerdings benötigen wie noch eine Funktion, die uns den ClassName des Konsolenfensters zurückgibt.

    MfG SideWinder



  • hallo,
    tut mir leid, aber mit Windows - bzw. WinApi - Programmierung kenn
    ich mich gar nicht aus. 😞

    Tschau Gartenzwerg



  • Musst du in diesem Fall auch nicht. Wenn ich blos eine Funktion kennen würde die mir diesen dämlichen ClassName liefern würde, hättest du schon zwei neue Funktionen für das Fenster :).

    Ich verschiebs mal nach WinAPI - die kennen dort vielleicht solche Funktionen und sobald dort eine Antwort steht schreib ich dir schnell die beiden Funktionen.

    MfG SideWinder


Anmelden zum Antworten