Uruchamianie innej aplikacji z programu

0

Problem jest dosyć złożony, a może wręcz odwrotnie.
Mianowicie chcę uruchomić z poziomu własnego programu inną aplikację z jakimś parametrem i odczytać wyniki jej działania (które ta aplikacja umieszcza w standardowym wyjściu). W środowisku C++ Builder można uruchomić inną aplikację w programie stosując funkcję: execl() ale uruchamiając inną aplikację kończy ona program, a chciałbym żeby wykonywał on kolejne instrukcje po odczytaniu ze standartowego wyjścia uruchomionej aplikacji jej wyników, poza tym nie wiem jak odczytać wyniki zwrócone przez tą aplikacje.

0

Aplikacje uruchom poprzez CreateProcess, funkcja ta wypełni ci strukture PROCESS_INFORMATION, której jednym z parametrów jest hProcess - uchwyt procesu uruchomionej aplikacji. Uchwyt ten wykorzystaj jako parametr funkcji WaitForSingleObject, która poczeka na zakończenie procesu, a jego kod wyjścia odczytaj funkcją GetLastError.

0

Dzięki, dla zainteresowanych dodatkowe informacje można znaleźć na http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/createprocess.asp
jest tam też przykład użycia tej funkcji. Funkcją GetLastError() nie da się odczytać tego co proces potomny umieścił na standardowym wyjściu, zwraca ona ostatni kod błędu uruchomionego procesu, trzeba to zrobić w inny sposób.

0

Pomyliło mi sie. Użyj GetExitCodeProcess

0

co do odczytania tego, co zewnętrzny program wypluł na standardowe wyjście - rozwiązanie tego jest w faq w dziale delphi.

0

jezeli aplikacja konsolowa to najprostszy sposob na rozwiazanie Twojego problemu to wywolanie programu w taki sposob aplikacja.exe > plik_z_wynikiem

//bleekm - eeee, jakby nie bylo to ja wlasnie to napisalem :/

0

Jezeli aplikacja konsolowa to proponuje np zrobic cos takiego:

ShellExecute(0, "open", "nazwa_programu.exe", "-parametry > file.txt", NULL, SW_HIDE);

A potem sobie z tego pliku 'file.txt' odczytujesz dane...

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