Datenaustausch zwischen 2 Programmen (Win32 c++)



  • Hallo,
    mein Frage ist es wie kann ich am sichersten Daten (3 Integer) zwischen 2 Programmen austauschen. Die Programme bauen auf Visual c++ Win32 auf und wurden mit VS2010 erstellt.

    1)Mein erster Gedanke war es über Command Line Arguments die Variablen abzufragen und das über den Befehl "CommandLineToArgvW function()" zu machen.
    Allerdings verstehe ich den Aufruf nicht. Ich meine wie ich von Programm1, die Variablen (Command Line Arguments) von Programm2 ansprechen kann. 😕
    Das Einzige was ich dazu gefunden habe, war der Konsolenbefehl "system()", allerdings steht in diesem Beitrag wie gefährlich der Befehl "system()" werden kann.
    http://www.cplusplus.com/forum/articles/11153/ Gibts dazu eine bessere Variante/Befehl???

    2)Dann wollte ich es über Pointer machen. Der Gedanke war eine gemeinsame Klasse zu erstellen, die in einer Header-Datei steckt. Diese wird von beiden Programmen benutzt. Der Pointer "*tempParam[3]" soll dann bei beiden Programmen auf den gleichen Speicher-Eintrag zugreifen. Das hat leider auch nicht funktioniert.

    Header:

    int *tempParam[3];
    class Transfer
    {
    public:
    	int TrParam[3];
    };
    

    Source:

    for (n=0; n <= 2; n++)
    	{
    	tempParam[n] = &nTransfer.TrParam[n];
    	}
    
    int aParam = *tempParam[0];
    int bParam = *tempParam[1];
    int cParam = *tempParam[2];
    

    GIBT es eine BESSERE Methode 😕 oder kann mir jmd. helfen wie ich mit einem der beiden voran komme?? 😃



  • schau hier :
    https://www.c-plusplus.net/forum/191782-full
    hoff das hilft dir ... 🙂

    lg



  • Deine Fragestellung ist mMn. etwas unklar.

    Wann startet Programm 1, wann startet Programm 2?
    Wer startet Programm 1, wer startet Programm 2?
    Wann genau müssen diese 3 Daten von welchem Programm an welches Programm übergeben werden?

    Ansonsten: man kann zwar Commandline-Parameter eines fremden Programms auslesen, allerdings weiss ich nicht wie, und man macht das normalerweise auch nicht. Die Möglichkeit besteht zu Debugging-Zwecken, nicht um es operativ zu nutzen.

    Und was Zeiger angeht: natürlich funktioniert das nicht, da die beiden Programme unterschiedliche Prozesse darstellen, und jedes "seinen eigenen Speicher" haben (=> virtueller Speicher).

    Aber beantworte erstmal die Fragen oben. Die Chancen stehen gut dass es eine halbwegs einfache Lösung für dein Problem gibt.



  • Vielen Dank für eure Beiträge!
    Ich glaube der Link mit dem dortigen Hinweis zum "Shared Memory" ist das, was ich brauche. 😃

    Sorry, wegen dem mit dem "Command Line Arguments", das hat nur verwirrt! 😕
    Brauche nur eine Methode um mit 2 Programmen auf die gleichen Werte zugreifen zu können. 😉

    http://msdn.microsoft.com/en-us/library/windows/desktop/aa366551(v=vs.85).aspx


Anmelden zum Antworten