Wywołanie programu okienkowego przez program konsolowy

Wywołanie programu okienkowego przez program konsolowy
Jakub Siarczewski
  • Rejestracja:ponad 5 lat
  • Ostatnio:ponad 5 lat
  • Postów:1
0

Witajcie
Pomyślałem, że napiszę sobie prosty program okienkowy, którego jedynym celem będzie zmiana wartości zmiennej logicznej, która przydałaby się w innych programach projektu.
Od razu pojawił się pewien problem, mianowicie, jak połączyć program okienkowy i konsolowy, czy w ogóle się da i czy ma to sens?
Próbowałem połączyć pliki projektu przez plik nagłówka .h, zaś sam program okienkowy wywołać w programie konsolowym przez funkcję system(). (Abstrahując, że jest to zły pomysł, ponieważ przy jednym projekcie nie istnieje plik .exe dla każdego pliku składowego z osobna [przynajmniej w Code::Blocks], jestem nowy i nie wiem jak inaczej można by to zrobić)

plik aplikacji konsolowej:

Kopiuj
#include<iostream> 
#include"projekt\wybor.h"

bool mm=false; //zmienna, którą przenoszę do aplikacji okienkowej (program do niej nie ma zastrzeżeń, wiec uzupełnienie o inny kod chyba niepotrzebne) 

int main() 
{ 
system("przyklad4.exe"); //próba wywołania całego programu Win API 
return 0; 
} 

EDIT:
Jest i biblioteka "windows.h", nie w tym rzecz.
Próbowałem wywołać cały oddzielny program okienkowy (Win API, te sprawy).
Jakby to... Mamy dwa programy (działające). To, co chciałbym zrobić:
Win API:
odpala się na zawołanie>>nadaje wartosc zmiennej bool mm>>zamyka się
Console Appliocation:
Wywołuje program Win API>>czeka aż się wykona>>leci dalej z kodem

Dałbym cały kod obu plików, ale to się mija z celem. (I tak, spokojnie, napisać program okienkowy sam w sobie zrobić bym umiał, nie w tym rzecz.
Ogólnie rzecz ujmując, to plik z programem okienkowym ma odpowiadać tylko za zmianę wartości zmiennej logicznej.

edytowany 2x, ostatnio: Jakub Siarczewski
RE
  • Rejestracja:ponad 18 lat
  • Ostatnio:około 3 godziny
1

Szukasz hasła:
IPC Inter Process Communication
Są różne biblioteki itp. rzuć okiem. tu np. qt https://doc.qt.io/qt-5/ipc.html
edit: Ale przyznam że do końca cię nie rozumiem.


We are the 4p. Existence, as you know it, is over. We will add your biological and technological distinctiveness to our own. Resistance is futile
edytowany 1x, ostatnio: revcorey
Jakub Siarczewski
Jeżeli tak jest, to znaczy, że moje rozumowanie ma błędy i idę w złym kierunku. :/ Dzięki, przyjrzę się temu, prawdopodobnie coś z tego wyciągnę. (Przy okazji, chyba QT byłoby ciekawym wyjściem)<br /> Temat można w sumie zamknąć, tak myślę (coś cięzko mnie zrozumieć :/ ).
sugar_hiccup
  • Rejestracja:prawie 11 lat
  • Ostatnio:ponad 2 lata
  • Postów:176
1
Kopiuj
system("przyklad4.exe"); //próba wywołania całego programu Win API

Skoro wywołujesz to w taki sposób to co za problem przekazać to jako argument programu? Tzn. np.

system("przyklad4.exe 1");


My to na arm napiszemy wszystko i zrobimy co chcemy tyle że 90% kodu to biblioteki z netu albo robota kompilatora Zdajesz sobie sprawę że tak na prawdę wyższy poziom języka może świadczyć jedynie o tym jak niskim poziomem wiedzy może dysponować bałwan,który nazwie się w rezultacie programistą i napisze działający program wciskając zleceniodawcy że tam to akurat musi być 100MHz ARM z 1M pamięci bo tak na prawdę jego pusta łepetyna nie potrafi zrealizować czegoś na innym słabszym mikrokontrolerze
Jakub Siarczewski
Może to głupie pytanie, ale co to robi wówczas?
sugar_hiccup
  • Rejestracja:prawie 11 lat
  • Ostatnio:ponad 2 lata
  • Postów:176
1

Może to głupie pytanie, ale co to robi wówczas?

Wówczas możesz się odnieść do przekazanego argumentu przez argc i argv:

Kopiuj
int main(int argc, char *argv[])
{
  std::cout << argv[1] << "\n";
}

Wtedy odpalając program z argumentem program.exe foobar, dostaniesz na wyjściu foobar.

argc to liczba przekazanych argumentów do programu (włącznie z nazwą programu), argv to tablica przekazanych argumentów (typu char *).


My to na arm napiszemy wszystko i zrobimy co chcemy tyle że 90% kodu to biblioteki z netu albo robota kompilatora Zdajesz sobie sprawę że tak na prawdę wyższy poziom języka może świadczyć jedynie o tym jak niskim poziomem wiedzy może dysponować bałwan,który nazwie się w rezultacie programistą i napisze działający program wciskając zleceniodawcy że tam to akurat musi być 100MHz ARM z 1M pamięci bo tak na prawdę jego pusta łepetyna nie potrafi zrealizować czegoś na innym słabszym mikrokontrolerze
Jakub Siarczewski
Czyli w jednym pliku daje: int main(int argc, char *argv[]) { std::system("przyklad4.exe", zmienna); std::cout << argv[1] << "\n"; return 0; } ?
sugar_hiccup
wypisanie argumentu to był tylko przykład, ty chcesz, jeśli dobrze rozumiem, żeby przyklad4.exe robił coś ze zmienną przekazaną w argv
Jakub Siarczewski
Chcę pozyskać zmienną z drugiego programu. Tylko najpierw ten drugi program musi się odpalić (na zawołanie) i zakończyć. Jestem zielony, także ten...

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.