Wywołanie programu okienkowego przez program konsolowy

Odpowiedz Nowy wątek
2019-12-02 20:25
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:

#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, 2019-12-02 20:54

Pozostało 580 znaków

2019-12-02 21:12
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, 2019-12-02 21:13
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) Temat można w sumie zamknąć, tak myślę (coś cięzko mnie zrozumieć :/ ). - Jakub Siarczewski 2019-12-02 21:20

Pozostało 580 znaków

2019-12-02 21:21
1
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");

Może to głupie pytanie, ale co to robi wówczas? - Jakub Siarczewski 2019-12-02 21:26

Pozostało 580 znaków

2019-12-02 21:29

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:

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 *).

Czyli w jednym pliku daje: int main(int argc, char *argv[]) { std::system("przyklad4.exe", zmienna); std::cout << argv[1] << "\n"; return 0; } ? - Jakub Siarczewski 2019-12-02 21:52
wypisanie argumentu to był tylko przykład, ty chcesz, jeśli dobrze rozumiem, żeby przyklad4.exe robił coś ze zmienną przekazaną w argv - sugar_hiccup 2019-12-02 21:55
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... - Jakub Siarczewski 2019-12-02 22:02

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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