Uruchamianie innej aplikacji z programu

Odpowiedz Nowy wątek
tj
2005-11-11 13:42
tj
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.

Pozostało 580 znaków

2005-11-11 14:19

Rejestracja: 16 lat temu

Ostatnio: 6 lat temu

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.

Pozostało 580 znaków

tj
2005-11-12 22:36
tj
0

Dzięki, dla zainteresowanych dodatkowe informacje można znaleźć na http://msdn.microsoft.com/lib[...]llproc/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.

Pozostało 580 znaków

2005-11-12 23:47

Rejestracja: 16 lat temu

Ostatnio: 6 lat temu

0

Pomyliło mi sie. Użyj GetExitCodeProcess

Pozostało 580 znaków

ŁF
2005-11-13 09:17
ŁF
Moderator

Rejestracja: 17 lat temu

Ostatnio: 15 godzin temu

0

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


Pozostało 580 znaków

2005-11-13 14:16

Rejestracja: 16 lat temu

Ostatnio: 2 lata temu

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 :/

Pozostało 580 znaków

2005-11-13 16:35

Rejestracja: 14 lat temu

Ostatnio: 8 lat temu

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


Pozostało 580 znaków

Odpowiedz

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