[Qt] Uruchamianie nowej aplikacji z poziomu programu

Odpowiedz Nowy wątek
2017-03-05 22:39

Rejestracja: 3 lata temu

Ostatnio: 3 lata temu

0

Witam serdecznie.

Szukałem na wielu forach odpowiedzi ale jak to bywa, nie znalazłem.
Chce uruchomić nową, taką samą aplikacje, z poziomu tej aplikacji. Nowa aplikacja znajduje się w innym folderze na dysku. Dodam, że aplikacje korzystają z niezależnych plików tekstowych umieszczonych w folderze z plikiem .exe. Otwarcie aplikacji przebiega pomyślnie, wszystko śmiga.

      QString path = "\"C:/Users/OSKI/Desktop/client/client1/client.exe\"";
      QProcess::startDetached(path);

Problem pojawia się, gdy nowo uruchomiona aplikacja otwiera plik tekstowy w celu wczytania danych. Okazuje się, że wczytuje dane, ale z pliku należącego do aplikacji, która wywołała uruchomienie tej aplikacji. Potwierdza to też fakt, że nie ma dostępu do plików aplikacji pierwszej, jeśli aplikacja druga jest włączona. Kolejną sprawą jest, że nie jestem w stanie usunąć bibliotek z folderu aplikacji pierwszej (oczywiście po uprzednim jej wyłączeniu) gdy druga działa. Czyli znowi - korzysta z bibliotek z kompletnie nie swojego folderu.

Kod do otwierania pliku:

    QString filePath = QDir::currentPath() + "/MyName.txt";
    qDebug() << filePath;
    QFile *file = new QFile(filePath);
    if(!file->open(QFile::ReadOnly | QFile::Text)) return;

    QTextStream in(file);
    QString name = in.readAll();
    this->setWindowTitle(name);
    file->close();  // usunąłem na czas testowania
    this->name = name;

Próbowałem zrobić to samo za pomocą funkcji z windows.h

      system("start C:/Users/OSKI/Desktop/client/client1/client.exe");

efekt dokładnie ten sam.

Ma ktoś pomysł czemu tak jest, lub może ja nie jestem doinformowany co do działania tych funkcji i tak musi być ;/

Pozostało 580 znaków

2017-03-05 23:50

Rejestracja: 7 lat temu

Ostatnio: 8 godzin temu

1

Zapewne trzeba wskazać ścieżkę katalogu roboczego.

  QString path = "\"C:/Users/OSKI/Desktop/client/client1/client.exe\"";
  QString directory = "\"C:/Users/OSKI/Desktop/client/client1\"";
  QProcess::startDetached(path, {}, directory);

Pozostało 580 znaków

2017-03-05 23:55

Rejestracja: 3 lata temu

Ostatnio: 3 lata temu

0

Super działa :) Dziękuje bardzo za pomoc, w ogóle nie zauważyłem tego parametru ;/

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0