C++ ShellExecute öffnet programm im falschen Verzeichnis
Hallo Leute

Ich habe zwei kleine Programme mit c++ geschrieben. Startet man das erste, so öffnet sich (durch ShellExecute) das zweite Programm. Nun ist das Problem, dass Programm2 in einem Unterordner liegt, und eine .txt datei öffnen soll, die im Selben Ordner wie Programm2 liegt (siehe Bild). Wenn aber Programm2 durch Programm1 ausgeführt wird, so findet er die txt-Datei nicht. Es ist also, als ob Programm2 im selben Verzeichnis wie Programm1 liegt, denn wenn ich bei Programm2 statt fopen("Text.txt"), fopen("Files\\Text.txt") schreibe, funktioniert es. Meine Frage ist nun: was muss ich ändern (ich nehme mal an beim Aufruf der Funktion ShellExecution()), damit es so funktioniert, wie ich es haben möchte (ohne Verwendung eines absoluten Pfads!).

hier einmal der Quellcode: Programm 1:

#include <iostream>
#include <Windows.h>

using namespace std;

int main()
{
    cout<<"Starte Programm2..."<<endl;
    ShellExecute(NULL, "open", "Files\\Programm2.exe", NULL, NULL, SW_NORMAL);
    
    system("pause");
    
    return 0;


}

Programm 2:

#include <iostream>
#include <Windows.h>

using namespace std;

int main()
{
    FILE * f;
    char buffer[100];
    
    f = fopen("Files\\Text.txt", "r");
    if(f == NULL)
    {
        cout<<"Couldn't find Text.txt"<<endl;

    }
    else
    {
        while(!feof(f))
        {
            if(fgets(buffer, 100, f) == NULL)
                break;

        }
        cout<<buffer<<endl;
        fclose(f);
    }

    cout<<endl;
    system("pause");
    
    return 0;


}

Ich möchte auf jeden Fall einen relativen Pfad verwenden ("Files\Programm2.exe" ). Ich bedanke mich jetzt schon mal für all eure (hoffentlich) hilfreichen Antworten!

...zum Beitrag

Hier noch ein paar Bilder, die veranschaulichen, wei die Verzeichnisse/Dateien angeordnet sind und was die Programme ausgeben.

...zur Antwort
C++ ShellExecute öffnet programm im falschen Verzeichnis
Hallo Leute

Ich habe zwei kleine Programme mit c++ geschrieben. Startet man das erste, so öffnet sich (durch ShellExecute) das zweite Programm. Nun ist das Problem, dass Programm2 in einem Unterordner liegt, und eine .txt datei öffnen soll, die im Selben Ordner wie Programm2 liegt (siehe Bild). Wenn aber Programm2 durch Programm1 ausgeführt wird, so findet er die txt-Datei nicht. Es ist also, als ob Programm2 im selben Verzeichnis wie Programm1 liegt, denn wenn ich bei Programm2 statt fopen("Text.txt"), fopen("Files\\Text.txt") schreibe, funktioniert es. Meine Frage ist nun: was muss ich ändern (ich nehme mal an beim Aufruf der Funktion ShellExecution()), damit es so funktioniert, wie ich es haben möchte (ohne Verwendung eines absoluten Pfads!).

hier einmal der Quellcode: Programm 1:

#include <iostream>
#include <Windows.h>

using namespace std;

int main()
{
    cout<<"Starte Programm2..."<<endl;
    ShellExecute(NULL, "open", "Files\\Programm2.exe", NULL, NULL, SW_NORMAL);
    
    system("pause");
    
    return 0;


}

Programm 2:

#include <iostream>
#include <Windows.h>

using namespace std;

int main()
{
    FILE * f;
    char buffer[100];
    
    f = fopen("Files\\Text.txt", "r");
    if(f == NULL)
    {
        cout<<"Couldn't find Text.txt"<<endl;

    }
    else
    {
        while(!feof(f))
        {
            if(fgets(buffer, 100, f) == NULL)
                break;

        }
        cout<<buffer<<endl;
        fclose(f);
    }

    cout<<endl;
    system("pause");
    
    return 0;


}

Ich möchte auf jeden Fall einen relativen Pfad verwenden ("Files\Programm2.exe" ). Ich bedanke mich jetzt schon mal für all eure (hoffentlich) hilfreichen Antworten!

...zum Beitrag

......

...zur Antwort

Hier noch mal der richtige Link, der andere war falsch:

http://www.file-upload.net/download-4575479/TwoPlayerShooter.rar.html

...zur Antwort

also ich würde es ja in eine avi-Datei umwandeln! hast du Mac oder windows?

...zur Antwort