eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingokienko z cmd.exe w Qt C++ › Re: okienko z cmd.exe w Qt C++
  • Data: 2022-04-18 18:30:10
    Temat: Re: okienko z cmd.exe w Qt C++
    Od: Adam M <a...@m...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    On Friday, April 15, 2022 at 1:10:22 PM UTC-4, Jivanmukta wrote:
    > W dniu 15.04.2022 o 15:53, Adam M pisze:
    > > On Thursday, April 7, 2022 at 8:26:19 AM UTC-4, Jivanmukta wrote:
    > >> Używam C++ i Qt5.
    > >> Potrzebuje uruchomić pewien program konsolowy z argumentami ale tak,
    > >> żeby było widać okienko cmd.exe z uruchomionym tym programem.
    > >> Próbowałem tak:
    > >>
    > >> std::string terminal = exec_system(L"echo %windir%") +
    > >> "\\system32\\cmd.exe";
    > >> terminal = str_replace("\n", "", str_replace(END_LINE, "", terminal));
    > >> QProcess *process = new QProcess();
    > >> QString exec = QString::fromStdString(terminal);
    > >> QStringList params;
    > >> params << "/C";
    > >> for (std::string s : explode(std::string(" "), command)) {
    > >> params << str_replace("\"", "", s).c_str();
    > >> }
    > >> process->start(exec, params);
    > >> process->waitForFinished();
    > >> delete process;
    > >>
    > >> ale niestety okienko cmd.exe się nie wyświetla.
    > >> Tzn. pojawia się na jakiś czas klepsydra, ale okienka nie ma.
    > >>
    > >> Jak to zrobić?
    > > Do pliku pro dodaj:
    > > CONFIG += console
    > > do pliku CPP ktory startuje twoja aplikacje dodaj
    > >
    > > #include <windows.h>
    > > #include <stdio.h>
    > >
    > > w funkcji main(..) dodaj
    > >
    > > // detach from the current console window
    > > // if launched from a console window, that will still run waiting for the new
    console (below) to close
    > > // it is useful to detach from Qt Creator's <Application output> panel
    > > FreeConsole();
    > >
    > > // create a separate new console window
    > > AllocConsole();
    > >
    > > // attach the new console to this application's process
    > > AttachConsole(GetCurrentProcessId());
    > >
    > > // reopen the std I/O streams to redirect I/O to the new console
    > > freopen("CON", "w", stdout);
    > > freopen("CON", "w", stderr);
    > > freopen("CON", "r", stdin);
    > >
    > A jak wystartować aplikację?
    Najlepiej to zrobic z cmd lub ps (albo z Microsoft Terminal jesli to Win 10) -
    teoretycznie konsola powinna byc dostepna nawet przy normalnym starcie z GUI (przez
    double-cick na ikone) ale czesto konsola sie pojawia ale bez informacji (tylko
    okienko konsoli i nic wiecej przynajmniej w QT pomiedzy 5.5 i 5.11 - w 6 za wyjatkiem
    prostych testow nic jeszcze nie robilem)

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: