WinAPI Funktionen in Konsole?



  • supersass1 schrieb:

    #include <iostream>
    #include <iostream.h>
    #include <windows.h>
    #include <winuser.h>
    #include <wingdi.h>
    

    ⚠ ➡

    #include <iostream>
    #include <windows.h>
    

    Wenns damit nicht geht, liegts am Compiler. DevC++ ? ➡ 👎 , VC 2005 ? ➡ nicht korrekt eingerichtet ?



  • CodeFinder schrieb:

    Wenns damit nicht geht, liegts am Compiler. DevC++ ? , VC 2005 ? nicht korrekt eingerichtet ?

    Achwas, hat weder mit Dev-C++ noch was mit dem Compiler zu tun. Bei jeder Standardinstallation ist Dev-C++ Code::Blocks, etc. bereits korrekt vorkonfiguriert, sodass eigentlich keine Fehler auftreten dürfen (vorausgesetzt, er nimmt den Code, den Du oben gepostet hast!)



  • nee.. danke aber klappt auch nicht.

    Ich glaube dann werd ich auf ne Win32 Anwendung umsteigen müssen.



  • Welche IDE und welchen Compiler verwendest du? Poste bitte mal den ganzen Code.



  • mikey schrieb:

    CodeFinder schrieb:

    Wenns damit nicht geht, liegts am Compiler. DevC++ ? , VC 2005 ? nicht korrekt eingerichtet ?

    Achwas, hat weder mit Dev-C++ noch was mit dem Compiler zu tun. Bei jeder Standardinstallation ist Dev-C++ Code::Blocks, etc. bereits korrekt vorkonfiguriert, sodass eigentlich keine Fehler auftreten dürfen (vorausgesetzt, er nimmt den Code, den Du oben gepostet hast!)

    Die Dev C++ IDE ist definitiv veraltet und nicht mehr zeitgemäß. Mit dem 'nicht korrekt eingerichtet' meinte ich die VC2005 Express Ed.-IDE!



  • Ja, da hast du schon Recht, aber das hat deswegen auch nichts mit den Fehlermeldungen zu tun, das meinte ich. Dass von Dev-C++ abzuraten ist, da stimme ich ganz klar überein mit dir.



  • mikey schrieb:

    Ja, da hast du schon Recht, aber das hat deswegen auch nichts mit den Fehlermeldungen zu tun, das meinte ich.

    Die veraltete Datei 'iostream.h' exisitiert bei manchen Compilern/IDE's noch. Deswegen auch "deprecated or antiquated header". Deswegen konnte das schon sehr wohl etwas mit der Warnung zu tun haben. Ich wollte mit meinem Post ja von ihm erfahren welchen Compiler er hat. DevC++ ist bekannt für seine Fehler (deswegen den als erstes) und VC 2005 wird relativ oft verwendet.



  • ich versteh es einfach nicht,
    ich habe Code sowohl mit CodeBlocks als auch mit VC++6 compiliert. Beide male klappt es nicht, hier der Code:

    #include <iostream> // lass ich iostream.h weg kommen fehlermeldungen
    #include <iostream.h>
    #include <windows.h>
    
    int i;
    int a;
    int b;
    int c;
    int anzahl=1;
    
    int findwindow() //fenster finden und öffnen
    {
        HWND hWnd;
    HANDLE hproc;
    DWORD procid;
    DWORD rw = 0;
    
    unsigned adress = 0x001504BC;  //0x11A9FBE7;
    char buffer[512];
    
    hWnd = FindWindow(0,"Warcraft III");
    if(!hWnd) {
    cout << "Fenster nicht Gefunden!" << endl;
    } else {
    cout << "Fenster Gefunden!" << endl;
    }
    
    ShowWindow(hWnd, SW_MAXIMIZE);
    
        const char  szText[] = "Hallo, dies ist der Text.";
        HDC hDC;
        bool n;
    while(1) // nicht ganz fertig, nur zum testen, programm soll text anzeigen
    
    {
        hDC =
     GetWindowDC (hWnd);
     TextOut     (hDC, 10, 750, szText, sizeof(szText) - 1);
     ReleaseDC   (hWnd,hDC);
     Sleep       (10);
    }
    
    }
    
    int main()
    {
    cout << "blabla" << endl; //unwichtig
    findwindow();
    
    	return 0;
    }
    


  • Du kannst iostream.h weglassen. Stattdessen musst du am Anfang des Codes (aber nach den Includes) folgenden Codeabschnitt einsetzen:

    using namespace std;
    

    Mehr zu Namespaces findest du in jedem C++ Tutorial. Zudem musst du für die Funktion "TextOut" eine extra Library ins Projekt linken, und zwar libgdi32.a. 😉



  • Falls du Code::Blocks verwendest, hier noch eine kleine Anleitung zum Linken der Library:

    Um eine Library linken zu können, musst du erst ein leeres Projekt erstellen:
    File ➡ New ➡ Project ➡ Empty Project

    ...dann fügst du deinen verbesserten Code ein. Jetzt kannst du die Library linken, die du im Installationsverzeichnis von Code::Blocks findest, unter dem Ordner "lib"

    Project ➡ Build Options ➡ Dropdownmenü Linker settings ➡ Add

    Falls du doch Dev-C++ verwendest, findest du auf meiner Seite ein Tutorial dazu.



  • ahh cool danke..
    ich hatte ausversehen das mit dem using namespace vergessen, und ich musste tatsächlich so eine Library einlinken. Also es klappt alles. Vielen Dank.

    Liegt das am Compiler oder Allgemein, weil jemand meinte ja ich bräuchte nur die zwei Header...



  • Nene, das liegt an dir. Du musst nur

    #include <iostream>
    #include <windows.h>
    

    einbinden, das war's ;). Und ich ahne jetzt schon Böses. Du möchtest anscheinend ins Game reinzeichnen, oder? Das wird so aber nicht klappen, da muss ich dich enttäuschen. Der Text wird vom Game sofort überzeichnet, das hast du ohne Tricks keine Chance. Aber es gibt welche 😉 Die Lösung nennt sich "Overlays", ist aber ein komplexes Thema, und nichts für Anfänger. Kann dir aber trotzdem mal einen Link geben:

    http://www.gamedev.net/community/forums/topic.asp?topic_id=359319

    Ich kann dir aber eins Vorab sagen: Du wirst damit nicht klarkommen 😉 Verschieb das einbisschen nach hinten, wenn du etwas besser mit C++ umgehen kannst, ist nicht böse gemeint 😉

    MfG mikey.



  • supersass1 schrieb:

    ahh cool danke..
    ich hatte ausversehen das mit dem using namespace vergessen, und ich musste tatsächlich so eine Library einlinken. Also es klappt alles. Vielen Dank.

    Liegt das am Compiler oder Allgemein, weil jemand meinte ja ich bräuchte nur die zwei Header...

    Lol ich habe dir in meinem ersten Post (und das war die erste Antwort die du bekommen hattest) geschrieben das du die Header und die .lib einbinden musst 💡

    MfG schirrmie



  • mikey schrieb:

    Nene, das liegt an dir. Du musst nur

    #include <iostream>
    #include <windows.h>
    

    einbinden, das war's ;). Und ich ahne jetzt schon Böses. Du möchtest anscheinend ins Game reinzeichnen, oder? Das wird so aber nicht klappen, da muss ich dich enttäuschen. Der Text wird vom Game sofort überzeichnet, das hast du ohne Tricks keine Chance. Aber es gibt welche 😉 Die Lösung nennt sich "Overlays", ist aber ein komplexes Thema, und nichts für Anfänger. Kann dir aber trotzdem mal einen Link geben:

    http://www.gamedev.net/community/forums/topic.asp?topic_id=359319

    Ich kann dir aber eins Vorab sagen: Du wirst damit nicht klarkommen 😉 Verschieb das einbisschen nach hinten, wenn du etwas besser mit C++ umgehen kannst, ist nicht böse gemeint 😉

    MfG mikey.

    hey cool danke, ja ich habe das auch schon gemerkt, wegen des Überschreibens. Ich hatte auch ein extra Thread dazu --> http://www.c-plusplus.net/forum/viewtopic-var-t-is-178574.html



  • Arrrgh ist das eine Frickelei der Thread. Keiner weis wirklich eine Lösung. Also noch ergänzend zu deinem Thread: Es geht mit Overlays, siehe mein Link 😉

    Lol ich habe dir in meinem ersten Post (und das war die erste Antwort die du bekommen hattest) geschrieben das du die Header und die .lib einbinden musst

    supersass! Hrmpfff!


Anmelden zum Antworten