oncopydata in normaler konsolenapplikation



  • Hallo,

    ich habe ein Konsolenprogramm, an das mittels SendMessage und WM_COPYDATA Informationen übergeben werden sollen.

    Wie mache ich das jetzt? Ich habe ja keinen Frame oder sonstwas ?

    Bitte um Hilfe, danke!

    Gruß Pete



  • hab mich mit Konsole nicht weiter beschäftigt oder besser gesagt is das soooo lange her. Aber die frage is doch eher welches fensterhandle du bei SendMessage benutzen willst um deine nachricht zu schicken. Des weiteren hat doch die Konsole keine MessageMap. Also dahingehend wirste suchen müssen



  • hab mich wohl etwas unglücklich ausgedrückt.
    also von einem anderen programm wird an das konsolenprogramm so etwas geschickt:

    if (hWnd)
        {
            COPYDATASTRUCT cds;
            ::ZeroMemory(&cds, sizeof(COPYDATASTRUCT));
            cds.lpData = (PVOID)&c;
            cds.cbData = sizeof(FUNCTION_CALL);
    
            ::SendMessage(hWnd, WM_COPYDATA, (WPARAM)::GetDesktopWindow(), (LPARAM)&cds);
        }
    

    nun frage ich mich aber, wie ich im konsolenprogramm das auslesen kann?

    folgendes funktioniert nicht:

    BOOL OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct)
    { 
    
    	cout << "recieved" << pCopyDataStruct->lpData << endl;
    	return OnCopyData(pWnd, pCopyDataStruct);
    
    }
    


  • na was is denn dein hWnd, also von welchem Window ist das Handle? das müsste ja dann das Handle der Konsole sein weil dahin soll ja die nachricht kommen.



  • ja ist es.
    aber ich weiß nicht wie ich das dann im konsolenprogramm abfangen kann


  • Mod

    Gar nicht. Das Fenster der Console kann man nach meinen Informationen nicht subclassen.

    Erzege selber ein verstecktes Fenster an das die Daten gesendset werden.
    Auch ein Consolen-Programm kann Fenster erzeugen.

    Ich frage mich nur ob dies Sinn machtund Du nicht eine andere einfachere Komunikationmsform (Sharedmemory, Named pipes, Memory Mapped Files) verwenden solltest.


Anmelden zum Antworten