winapi funktionen in c/c++ anwenden



  • Hi Leute
    Ich will ein programm schreiben das man nicht sieht und würde dazu die winapi gebrauchen. ich hab auch schon gesucht und folgenden code gefunden:

    #include <iostream>
    #include <windows.h>
    
    int main ()
    {
    
        HWND hwnd = GetConsoleWindow ();
    
        // Jetzt kann das Handle übergeben werden, und die Konsole versteckt sich.
    
        ShowWindow (hwnd, SW_HIDE);
        getchar ();
    }
    

    Wenn ich jedoch jetzt diesen code compilern will (mit microsoft visual c++ 6) bringt er mir folgende Fehler:

    C:\ ... console verstecken.cpp(7) : error C2065: 'GetConsoleWindow' : nichtdeklarierter Bezeichner
    C:\ ... console verstecken.cpp(7) : error C2440: 'initializing' : 'int' kann nicht in 'struct HWND__ *' konvertiert werden

    kann mir jemand sagen was ich falsch mache?
    mfg Albert



  • Dieser Thread wurde von Moderator/in TactX aus dem Forum ANSI C in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • #include <iostream> // Wofür? Du scheinst ja kein cout usw zu nutzen ... das ist dann unsinnig ...
    #define _WIN32_WINNT 0x0500
    #include <windows.h>
    
    int main()
    {
        HWND hWnd = GetConsoleWindow();
        if (hWnd == NULL)
            return 0;  
    
        ShowWindow(hWnd, SW_HIDE);
    
        getchar();
        return 0;
    }
    

    Referenzen
    GetConsoleWindow



  • also mit microsoft visual c++ funktioniert das nicht mit dev-c++ allerdings schon kann mir jmd sagen an was das liegt



  • Dec-C++ hat vermutlich nicht die aktuellen Header.... Aber wenn Du willst, verschiebe ich Dich ins IDE-Forum... dort gibt es fast jeden Tag ein Problem mit dem Dev-C++ (in Zeiten von VC2005EE kann ich es absolut nicht nachvollziehen wie man den den Dev-C++ verwenden kann...)



  • Jochen Kalmbach schrieb:

    Dec-C++ hat vermutlich nicht die aktuellen Header.... Aber wenn Du willst, verschiebe ich Dich ins IDE-Forum... dort gibt es fast jeden Tag ein Problem mit dem Dev-C++ (in Zeiten von VC2005EE kann ich es absolut nicht nachvollziehen wie man den den Dev-C++ verwenden kann...)

    Lies nochmal genauer was der TO geschrieben hat. Er schrieb das es mit Devcpp funktioniert, mit Visual C++ aber nicht!



  • Upps... da war vermutlich der wunsch mein der Vater des Gedanken 😉 ...
    Vermutlich hat er das 9 Jahre alte VC6 und kein aktuelles PSDK (bzw. das Feb 2003 PSDK)



  • #include <iostream> // Wofür? Du scheinst ja kein cout usw zu nutzen ... das ist dann unsinnig ...
    

    Hmm, ich halte das nicht für unsinnig, da sonst die "getchar ()" Funktion ganz unten im Code nicht mehr auffindbar wäre 😉 Und würde dort kein "getchar ()" etc. stehen, würde sich das Programm nach Ausführen aller Befehle schließen, und man könnte sich das Ergebnis nicht mehr angucken.

    EDIT: Der Code ist übrigens von meiner Homepage, hab dort ein kleines Tutorial dazu veröffentlicht. 🙂 Ich werde gleich mal die if (hwnd == NULL) Abfrage einbauen, ist wohl vernünftiger ...

    MfG mikey.



  • Wieso nicht einfach FreeConsole verwenden?



  • Weil FreeConsole eine andere (Haupt) Funktion hat, und in dem Beispiel nicht zweckmäßig arbeiten würde. Sie löst die Konsole vom Prozeß ab, was eigentlich garnicht gebraucht wird.

    MfG mikey.



  • (Ich brauche mal Aufklärung: Wieso schreibt man ne Konsolenanwendung, wenn man die Konsole dann versteckt ? - Sowas sieht man ja hier alle paar Meter?)



  • yakl - yet another key logger 😉



  • geeky schrieb:

    (Ich brauche mal Aufklärung: Wieso schreibt man ne Konsolenanwendung, wenn man die Konsole dann versteckt ? - Sowas sieht man ja hier alle paar Meter?)

    Weil manche vielleicht doch ein grafisches Fenster öffnen wollen, ohne die WinMain benutzen zu wollen? (mache ich übrigens auch)



  • mikey schrieb:

    Weil FreeConsole eine andere (Haupt) Funktion hat, und in dem Beispiel nicht zweckmäßig arbeiten würde. Sie löst die Konsole vom Prozeß ab, was eigentlich garnicht gebraucht wird.

    MfG mikey.

    Wieso mitte würde das "in diesem Fall" (woher weisst du eigentlich was der OP genau will - geschrieben hat er das nirgends so genau) nicht zweckmässig wäre? Was FreeConsole tut ist mir schon klar, und wenns nur darum geht ein Commandline Programm ohne sichtbare Konsole laufen zu lassen dann ist FreeConsole SEHR zweckmässig.



  • ich habs jetzt auch noch den code von (D)evil in visual c++ expess edition ausprobiert und da bringt er mir folgenden fehler:

    c:\ ... console verstecken.cpp(3) : fatal error C1083: Datei (Include) kann nicht geöffnet werden: "windows.h": No such file or directory

    was muss ich da noch machen oder liegt das nicht an mir



  • pfade in tools-->options-->project...-->verzeichniss korrekt gesetzt?
    die datei windows.h auf der platte überhaupt gefunden?
    umgebungsvariablen korrekt gesetzt?
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/C1083.asp



  • diese anleitung hilft mir jetzt nicht viel!! ich weis nicht genau wo ich da rein muss ich habs jetzt mal so gemacht:
    http://p-p.de.tl/
    is das so richtig wenn ja wo muss ich was nachschauen, wo kann ich sehen das windows.h auf der platte enthalten ist wenn ich die normale suchfunktion nehme findets er einmal in verbindung mit dev-c++ und einmal in verbindung mit microsoft visual c++ 6.0 und von umgebungsvariablen hab ich noch nichts gehört
    tut mir leid das ich euch so nerv aber mich stört dieses problem ziemlich
    mfg Albert


Anmelden zum Antworten