Konsole verstecken --> ist nicht mehr in der FAQ !!!



  • @Sidewinder:
    Die implementierung Deiner Improved Console benutzt Du ja auch den Aufruf der Funktion GetConsoleWindow. Die andere Alternative ist doch für ältere Systeme wie z.B. Windows 9X, ME usw. gedacht, oder?

    Nicht nur für ältere Systeme sondern auch für ältere Platform-SDKs (und dein Compiler hat kein aktuelles weils das für diesen Compiler ganz einfach nicht gibt). Es wird auch in der MSDN dieser Weg empfohlen.

    Zum Titel: Diese Themen sind allesamt in die Improved Console gewandert. Ich verweise immer in den Source-Code 🙂

    MfG SideWinder



  • Es handelt sich bei meinem Projekt um eine Anwendung mit grafischer Oberfläche (QT 4.0.1 OS) in der ich mehrere Konsolenprogramme aufrufe. Die Konsolen sollen wie gesagt aber nicht sichtbar sein.

    Holst du dir für deinen Proezss eine Konsole mit AttachConsole() und führst dann dort Befehle aus? Nutzlos, da kannst du die Befehle auch gleich so in deinem Programm ausführen.

    Führst du allerdings ein externes Konsolenprgoramm aus (ShellExecute, CreateProcess, sth like that) hast du mit GetConsoleWindow() afaik sowieso keine Chance weil die Funktion immer nur die eigene Konsole holt. Dann musst du sowieso über FindWindow gehen -> oder wiederrum besser ohne den Umweg in eine Konsole 🙄

    MfG SideWinder



  • zum thema:

    ich (win2k pro) versuche gerade ungefaehr dasselbe hinzubekommen, im grunde lediglich den handle fuer die ausfuehrende konsole per GetConsoleWindow() zu ermitteln.

    funktioniert bisher aber weder im MinGW (3.4.2) noch mit dem extra frisch installierten Microsoft Visual C++ Toolkit 2003.

    bekomme immer einen aufloesungsfehler vom linker, im falle vom MSVC++ auf meine eingabe "cl src.c /link Kernel32.lib":

    C:[C++]\shutdown>cl shutdown.c /O1 /link Advapi32.lib User32.lib Kernel32.lib
    Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
    Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
    
    shutdown.c
    Microsoft (R) Incremental Linker Version 7.10.3077
    Copyright (C) Microsoft Corporation.  All rights reserved.
    
    /out:shutdown.exe
    Advapi32.lib
    User32.lib
    Kernel32.lib
    shutdown.obj
    shutdown.obj : error LNK2019: unresolved external symbol _GetConsoleWindow referenced in function _main
    shutdown.exe : fatal error LNK1120: 1 unresolved externals
    

    ps: umgebunsvariablen (inlcude usw) muessten (vom MSVC++ toolkit installer) alle gesetzt sein und moechte es gerne in der normalen, will sagen nicht in der improved console hinbekommen.

    thx



  • Du benötigst dafür das neueste Platform-SDK, downloadbar auf der Microsoft-Seite. Das hilft allerdings nur bei einem MS-Compiler.

    Mit allen anderen Compilern die noch kein aktuelles Platform-SDK mitliefern musst du den Hack aus der Implementierung der IC verwenden 🙂

    MfG SideWinder



  • Wenn Du die Console loswerden willst kannst Du auch "FreeConsole" aufrufen...

    GetConsoleWindow ist erst ab w2k verfügbar (und dann mit einem aktuellen PSDK). Wobei, wenn Du mit VC6 arbeitest darfst Du nicht das neueste nehmen sondern das Feb2003: http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm



  • Moin SideWinder THX fuer prompte antwort!

    ohje ich vergass: ich HABE das neuste Platform-SDK gestern bereits installiert (ca 3h download grmpf)

    so stands ja auch weiter oben, nicht dass ich hier nicht alles aufmerksamst lesen wuerde.. 😉

    *kopfkratz*



  • @Jochen

    Wobei, wenn Du mit VC6 arbeitest darfst Du nicht das neueste nehmen sondern das Feb2003: http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm

    AHA, dann wirds wohl das gewesen sein? ich hatte meins von hier
    http://www.microsoft.com/downloads/details.aspx?FamilyID=eba0128f-a770-45f1-86f3-7ab010b398a3&DisplayLang=en

    noch aus intresse: und warum nicht das aktuelle?

    cheers



  • und aus gesteigertem intresse: und warum sagt mir das keiner!? 😉



  • iowews schrieb:

    @Jochen

    Wobei, wenn Du mit VC6 arbeitest darfst Du nicht das neueste nehmen sondern das Feb2003: http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm

    AHA, dann wirds wohl das gewesen sein? ich hatte meins von hier
    http://www.microsoft.com/downloads/details.aspx?FamilyID=eba0128f-a770-45f1-86f3-7ab010b398a3&DisplayLang=en

    Naja eher nicht... bei dem ganz neuen ist diese Funktion auch dabei, Du solltest hat nur mal die Hilfe lesen und hättest dann festgestellt, dass Du "_WIN32_WINNT" als "0x0500" oder höher definieren musst...

    iowews schrieb:

    noch aus intresse: und warum nicht das aktuelle?

    Das w2k3-sp1 ist nicht mit VC6 getestet und teilweise sind die LIBs nicht mehr mit dem Linker kompatibel...



  • @ionews: Ich sehe bei deinem Output allerdings den VC2003 im Einsatz, das aktuelle Platform-SDK ist damit kompatibel 😕 Einziger Fehler der mir jetzt so einfallen würde ist, dass du die Pfade nicht auf das neue Platform-SDK gesetzt hast und der Compiler trotz Installation des Neuen immer noch das Alte benützt.

    Wenn Du die Console loswerden willst kannst Du auch "FreeConsole" aufrufen...

    Damit wird für den aktuellen Prozess die Konsole dealloziert. Afaik geht das aber nicht bei Konsolenanwendungen sondern nur bei "normalen" Win32-Anwendungen.

    MfG SideWinder



  • thx fuer beistand vorab!

    Du solltest hat nur mal die Hilfe lesen und hättest dann festgestellt, dass Du "_WIN32_WINNT" als "0x0500" oder höher definieren musst...

    hab ich..

    Damit wird für den aktuellen Prozess die Konsole dealloziert. Afaik geht das aber nicht bei Konsolenanwendungen sondern nur bei "normalen" Win32-Anwendungen.

    bei mir funktionierts jetzt auch so, wuerde aber dennoch gerne wissen warum nicht anders.

    hier die (wie ich hoffe relevanten) vom installer automatisch gesetzen umgebungsvariablen:

    Path=C:\USR_BIN\texmf\miktex\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\USR_BIN;C:\USR_BIN
    \nmap-3.81;C:\USR_BIN\cygwin\bin;C:\USR_BIN\Dev-Cpp\bin;C:\USR_BIN\Java\jdk1.5.0_05\bin;C:\USR_BIN\Microsoft V
    isual C++ Toolkit 2003\bin;C:\USR_BIN\Microsoft Platform SDK\Bin\.;C:\USR_BIN\Microsoft Platform SDK\Bin\WinNT
    \.
    INCLUDE=C:\USR_BIN\Microsoft Platform SDK\Include\.;C:\USR_BIN\Microsoft Visual C++ Toolkit 2003\include
    


  • Der Installer macht afaik ncihts automatisch. Im Startmenü hast du nen Eintrag vom Platform-SDK, dort gibts irgendwo einen ganzen Haufen an "Register System-Variables"-Bat-Files. Das richtige (zB 32bit Windows) auswählen und dann loslegen.

    BTW: Hast du jetzt VC6 oder VC2003 im Einsatz?

    bei mir funktionierts jetzt auch so

    Eh jo. Das heißt ich hätt mri mein Post eben sparen können? 😕😃

    MfG SideWinder



  • BTW: Hast du jetzt VC6 oder VC2003 im Einsatz?

    halt das "abgespeckte" Microsoft Visual C++ Toolkit 2003, also letzteren wie ich annehmme. ..?.. bin etwas neu hier :p

    Eh jo. Das heißt ich hätt mri mein Post eben sparen können? 😕😃

    moeglich, aber nur in Bezug auf FreeConsole() ! 😉

    Der Installer macht afaik ncihts automatisch. Im Startmenü hast du nen Eintrag vom Platform-SDK, dort gibts irgendwo einen ganzen Haufen an "Register System-Variables"-Bat-Files. Das richtige (zB 32bit Windows) auswählen und dann loslegen.

    UND ES GEHT!!thousand thx hehe, juut dass wir drueber geredet haben.


Anmelden zum Antworten