Podpinanie programu konsolowego do okienkowego

0

Witam,
Mam program konsolowy napisany w VS2015.
Chciałbym dorobić do niego oprawę graficzną w QT.
Będę w stanie z QT wywołać ten konsolowy program i odczytać jakoś, że zakończył działanie? Program konsolowy może wysyłać jakiś sygnał w eter? Albo zwracać wartość?
Czy muszę go całego przepisać?
Czy może konsolowy przerobić na bibliotekę dll i tylko funkcję wywoływać?

Jakie Wy macie zdanie? Jakie jest najlepsze wyjście?

0

Będę w stanie z QT wywołać ten konsolowy program i odczytać jakoś, że zakończył działanie? Program konsolowy może wysyłać jakiś sygnał w eter? Albo zwracać wartość?

Tak, odpowiada za to return funkcji main.

Czy muszę go całego przepisać?
Czy może konsolowy przerobić na bibliotekę dll i tylko funkcję wywoływać?
Jakie Wy macie zdanie? Jakie jest najlepsze wyjście?

Zależy od programu, nie ma uniwersalnej odpowiedzi.

0

A jak odebrać to co zwróci main?

1

Najlepszym rozwiązaniem byłoby wydzielenie wspólnej funkcjonalności do biblioteki i skorzystanie z niej. Jeśli jednak to niemożliwe to musisz jakoś skomunikować te dwa procesy ze sobą - czy to za pomocą socketów, mechanizmów IPC takich jak DDE, czy też nawet za pomocą zwykłego stdin/stdout. To ostatnie jest najłatwiejsze (nie mam zdania n/t lepszości - może kłócić się z interfejsem konsolowym), bo QProcess pozwala na czytanie z stdout i stderr oraz pisanie do stdin procesu.

0

Funkcja, której użyjesz do uruchomienia tamtego programu, będzie miała jakąś możliwość odebrania zwróconej wartości. Sposobów na wykonanie tego jest cała masa, jak kq pisał.

0

Konsolowy program nie będzie nic wyrzucał ani wczytywał od użytkownika.
Jako parametr dostaje ścieżkę do folderu z plikami pdf, które otwiera, czyta pewne informacje i tworzy jeden plik pdf zestawiający wcześniej wczytane dane.
Chodzi mi tylko o to, żeby program okienkowy wiedział, że konsolowy zakończył działanie.

1

Konkretne mechanizmy zależą od używanego systemu operacyjnego, są też multiplatformowe wrappery na to, na przykład boost::process. Qt na pewno też coś do tego ma, poszukaj.

EDYCJA:
Qt ma do tego QProcess.

1

Qt ma QProcess, który ma sygnał finished. Ale to powinieneś umieć sam zgooglować...

0

Nigdy tego nie robiłem, dlatego zadałem pytanie. Dzięki za wszystkie odpowiedzi :)

0

Jeszcze pytanie poza tematem, ale mnie to interesuje trochę.
Napiszę od razu, że nie znam się na projektowaniu, pisaniu stron internetowych.
Czy istnieje szansa na odpalenie programu po stronie serwera?
Program konsolowy, który opisywałem wcześniej. Chodzi mi o coś takiego, żeby napisać jakiś interfejs w javascript, który robiłby za oprawę graficzną.
Pytam tylko teoretycznie czy istnieje taka możliwość.

0

Tak istnieje taka możliwość. Zasada działania jest identyczna co do programu desktopowego komunikującego się z programem CLI a jedyna różnica jest w widoku.

0

Poczytaj o D-Bus.

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