Datentransfer zwischen individuellen Programmen



  • Hallo,

    ich suche nach einer Möglichkeit von einem Programm verschiedene Daten (nicht
    viel, nur ein paar double) mit einer einstellbaren Zeitverzögerung an ein anderes
    Programm weiterzugeben.
    Ist das einigermaßen einfach zu machen?
    Benutze VC++ 2005

    grüße
    Huddi



  • WM_COPYDATA wäre eine Möglichkeit.




  • Mod

    Named Pipes, DDE, COM, WM_COPYDATA (wurde schon genannt).

    Eben alles was IPC zu bieten hat.



  • Okay, danke!
    hatte hier nen Beispiel rumliegen, das mit nem TCP mirror gearbeitet hat.
    Sieht eher aufwändig aus.



  • Was soll ein "TCP mirror" sein?



  • keine Ahnung, so heißt das Programm. Arbeitet wohl mit sockets



  • Mit WM_COPYDATA kann ich jetzt zwischen zwei einfachen Programmen kommunizieren.

    Dabei muss das Senderprogramm allerdings vor jedem Senden FindWindow aufrufen
    oder? Kann das schlecht sein, wenn viele male pro Sekunde gesendet wird?

    Ich habe jetzt auch versucht Daten an ein komplexeres Programm zu schicken. Ich
    müsste ja eigentlich nur in der Methode, die die Messages
    verarbeitet meinen WM_COPYDATA case eintragen oder?

    Jetzt habe ich zwei Probleme, bei denen ich nicht weiß ob die der Auslöser sind,
    dass es nicht klappt.

    1. die FindWindow funktion: das andere Programm erstellt sich eine eigene
    WNDCLASS mit dem Namen _T("D3D Window")
    Bei find Window muss ich aber einen LPCWSTR eingeben und er erkennt das _T nicht.
    Ich hab also L"D3D Window" eingegeben. Müsste das gehen?

    2. das Programm, an das gesendet wird ist im Fullscreenmodus. Ich habe
    das so gelöst, dass ich zuerst den Sender starte und der praktisch ein paar mal
    ins leere sendet bevor erst die fehlermeldung kommen kann.
    In der Zeit starte ich das Fullscreenprogramm. Er kann die Daten jedoch
    trotzdem nicht senden. Kann das so überhaupt funktionieren?



  • Klingt alles sehr mysteriös, du willst doch net etwa mit WM_COPYDATA Daten an ne DirectX (3D) Anwendung schicken, und wenn ja für welchen Zweck, denn ich bezweifle dass das programm auf die Sachen überhaupt "hört".



  • also: Zweck ist es ein Head-Up-Display über ein Stereokamerabild zu legen.

    Das Stereobild wird von einem opensource StereoVisualisationKit verarbeitet.
    Das ist dafür gedacht eigene Projekte zu erstellen.
    Und ja es ist DirectX, aber warum macht das einen Unterschied?

    Es wäre schön wenn die Daten, die dafür gebraucht werden (paar Winkel, Position und Geschwindigkeit) von einem externen Programm kommen könnten, da dieses schon
    vorhanden ist (eine Kameraarmsteuerung).



  • Es funktioniert! Also überhaupt kein Problem mit Direct X. Der Name vom Fenster war nur verkehrt.
    Aber nochmal die Frage: benutzt FindWindow viel cpu?


Log in to reply