Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » WriteConsole bräuchte hilfe

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
05.02.2006, 21:26 Uhr
Kabel



Hallo,

ich habe hier ein Problem mit dem Befehl WriteConsole... Ich hänge wieder bei den Parametern, der weiteren weiss ich nict sicher ob ich die richtige Syntax benutze und ob es überhaupt so funktionieren kann.

Hier ein AUszug:

C++:
AllocConsole();
        HANDLE hIn;
        hIn = GetStdHandle(STD_INPUT_HANDLE);
        if (hIn != INVALID_HANDLE_VALUE)
        {
bool y=TRUE;
            while(y)
        {
            cout<<"Mitteilung ";
            recv(W_IP, Buffer, sizeof(Buffer), 0); //Buffer wird angenommen
            
        system(Buffer);
        for(int i=0;i<sizeof(Buffer);i++) //"leeren" vom Buffer
                {
                    Buffer[i]='\0';                    
                }
        //cout<<Buffer;
        }

        HANDLE hOut;
        hOut = GetStdHandle(STD_OUTPUT_HANDLE);
        if (hOut != INVALID_HANDLE_VALUE)
        { //int* k;
            BOOL WriteConsole(reinterpret_cast<int>(hOut)/*,Buffer,1024, k, NULL*/);

        }



Ich würde mich sehr über etwas Hilfe freuen.

mfg
Kabel
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
05.02.2006, 22:45 Uhr
Spacelord
Hoffnungsloser Fall


Hallo,
warum willst du das Handle nach int casten?
Und dein k ist nur nen Zeiger auf nen int.Dahinter steht kein belegter Speicher.
Das gibt ne feine Access Violation wenn WriteConsole da die Anzahl der geschriebenen Zeichen reinschreiben will.
Und überhaupt,was soll WriteConsole denn noch ausgeben wenn du denn Buffer mit binären Nullen beschrieben hast?
Naja,ist mir streng genommen auch Latte.

C++:
int k;
WriteConsole(hOut,Buffer,1024,&k,NULL);



MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
05.02.2006, 22:54 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


und wieso führst du das was über dassocket kommt einfach so per system aus ohne es zu prüfen? was ist wenn ein anderes programm etwas schickt?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
05.02.2006, 23:32 Uhr
~Kabel
Gast


Hallo,
ich danke erstens mal für die Antworten

Ich muss zu meiner Verteidigung sagen dasss ich ein totaler Anfänger bin in sachen Sockets und so...

also das mit dem nach int casten war nur so eine IDee da ich wirklich nicht mehr weiter wusste und der M$ Visual Studio meinte das sollte ich machen, einleuchten tat es mir nicht...
dann mach ich das mal weg^^

Zitat:

Und überhaupt,was soll WriteConsole denn noch ausgeben wenn du denn Buffer mit binären Nullen beschrieben hast?



Ups... das kommt daavon wenn man vielles versucht und sich mehr auf WriteConsole konzentriert... weisst du ich hänge schon mehr als einen ganzen Tag an den 5 Zeilen...

Aber wenn ich das nicht hinten dran schreiben hat mein Bufer den Befehl und der rest wird dann mit irgendwelchen Zeichen gefüllt, keine Ahnung wieso das konnte ich damit beheben, aber ich packe es dann einfach hinter den WriteConsole.

mh Guybrush was wäre dann dein Vorschlag um es sicherer zu machen? Tut mir Leid dass ich euch mitso anfängererien Plage aber irgendwo muss ich ja den Anfang machen.

mfg
Kabel
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
06.02.2006, 17:14 Uhr
Kabel



So ich habe es probiert.. gleiche Fehlermeldung als ich vor dem cast hatte...
nämlich:

error C2664: 'WriteConsoleA' : cannot convert parameter 4 from 'int *' to 'unsigned long *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

(MS VISUAL STUDIO 6)

Hat vielleicht einer ne idee woran das liegt?
Der Fehler tritt beim Compilen auf...
Bin für jede Antwort dankbar!

Schöne Grüsse,
Kabel
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
06.02.2006, 19:28 Uhr
Spacelord
Hoffnungsloser Fall


Hi,
noch eindeutiger kann ne Fehlermeldung doch eigentlich kaum sein,oder?
In Verbindung hiermit,

Zitat von MSDN:

BOOL WriteConsole(
HANDLE hConsoleOutput,
const VOID* lpBuffer,
DWORD nNumberOfCharsToWrite,
LPDWORD lpNumberOfCharsWritten,
LPVOID lpReserved
);


liegt folgendes nahe:


C++:
DWORD k;
WriteConsole(hOut,Buffer,1024,&k,NULL);



MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
06.02.2006, 19:45 Uhr
Kabel



Hallo,

danke, werd ausprobieren. Naja einleuchten tut es mir noch immer nicht, aber ich bin noch kein Experte, aber ich werde mir mühe geben es zu werden

Auf jeden fall will ich euch allen einen ganz Grossen Dank sagen, Thx dass ihr euch die Zeit nehmt mir zu helfen.
mfg
Kabel
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
06.02.2006, 19:48 Uhr
Kabel



Jo klappt, thx


schade dasss man hier nicht editieren kann...
mfg
Kabel
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
06.02.2006, 22:04 Uhr
Spacelord
Hoffnungsloser Fall



Zitat von Kabel:

schade dasss man hier nicht editieren kann...



Kannst du doch,allerdings nur eine Stunde lang(glaub ich zumindest das es ne Stunde war).

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
06.02.2006, 22:50 Uhr
Kabel



Echt? Naja ich hatte 5 minuten später probiert, naja werd nach diesem Beitrag nochamls versuchen.

Na wenn ich schon einen Beitrg schribe dann noch ne Frag, sry...

also hier mal mein Code:

C++:
send(W_IP,"C",1,0); //Envoi d'un octet en tant que test
    cout<<"[+]Verbindung steht"<<endl;
        AllocConsole();
//------------------------------------------------INPUT
        HANDLE hIn;
        hIn = GetStdHandle(STD_INPUT_HANDLE);
        if (hIn != INVALID_HANDLE_VALUE)
        {
bool y=TRUE;
            while(y)         {
            cout<<"Reception : ";
            recv(W_IP, Buffer, sizeof(Buffer), 0); //mitteilungen vom server
        
        DWORD k;

///////////////////////////////test OK
STARTUPINFO          si = { sizeof(si) };
PROCESS_INFORMATION  pi;
char                 szExe[] = "cmd.exe";

if(CreateProcess(0, szExe, 0, 0, FALSE, 0, 0, 0, &si, &pi))
{  
WriteFile (hIn,Buffer,1024,&k,NULL);  
}



So sieht mein Programm jetzt aus, also nach der VErbindung des Sockets... Flo-Soft meinte ich soll WriteFile benutzen um in die neue Shell zu schreiben. Ich möchte nun gerne den buffer in form von
Code:
system(Buffer)
in diese Shell schreiben, aber irgendwie will das wieder nicht... was mach ich da Falsch? ISt writefile richtig? Oder ist es WriteConsole was ich benutzen soll?

Bin sehr dankbar für die Hilfe bisher,
mfg
Kabel
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: