Article View: pl.comp.lang.delphi
Article #334887Re: CreateProcess i zamykanie
From: Arivald
Date: Mon, 23 Jan 2012 13:18
Date: Mon, 23 Jan 2012 13:18
63 lines
3052 bytes
3052 bytes
W dniu 2012-01-23 13:34, GAD Zombie pisze:
> Witam
>
> Napisalem sobie funkcje, za jakimis przykladami z sieci, ktora ma za
> zadanie wlaczyc jakas aplikacje w osobnym watku, ukrywajac jej okno.
> Zalozenie jest takie, ze razem z moim programem wlacza sie drugi program
> z linii polecen i ma nie byc widac tego czarnego okna commandline. Przy
Użyj CREATE_NO_WINDOW w CreateProcess dwCreationFlags, i nie będziesz
musiał się bawić w ukrywane okna poprzez STARTUPINFO
> zamykaniu aplikacji wylaczam ten uruchomiony proces, korzystajac z id,
> ktore zwrocilo mi CreateProcess. Oto ta funkcja:
>
> function WlaczExeka(sciezka, parametry: string): cardinal;
> var
> startup: STARTUPINFO;
> inf: PROCESS_INFORMATION;
> begin
> result := 0;
>
> ZeroMemory(@startup, SizeOf(STARTUPINFO));
> startup.dwFlags := STARTF_USESHOWWINDOW;
> startup.wShowWindow := SW_HIDE;
> startup.cb:= SizeOf (STARTUPINFO);
>
> if CreateProcess(pchar(sciezka), pchar(parametry), nil, nil, false, 0 ,
> nil, nil, startup, inf) then
> begin
> result := inf.dwProcessId;
> end
> else
> begin
> // Memo1.lines.add('Niemożliwe uruchomienie: ' + sciezka);
> end;
> end;
>
>
> Calosc dziala poprawnie, jednak mam problem innego typu.
> Zakladajac, ze moja aplikacja sie jakos wywali, to ten stworzony proces
> zostaje w pamieci i dziala nadal, chociaz moja aplikacja jest juz
> zamknieta (bo przy wywaleniu sie nie zamknela procesu potomnego).
>
> I tu pytanie: Jak to zrobic, zeby ten proces zawsze sie zamknal razem z
> moja aplikacja? Chodzi mi po glowie, ze proces utworzony przeze mnie
> powinien miec jakiegos parenta, ktorym jest moja aplikacja. Jesli moja
> aplikacja sie zamknie, to tamten proces tez musi sie zakonczyc.
>
> Jak to mozna rozwiazac?
Jeśli to Twój program (możesz go zmienić) to przerób go tak żeby się sam
zamykał jak główny padnie.
Jeśli nie to napisz własny program (konsolowy), który to będzie
uruchamiał tamten, i zamykał go jak główny padnie.
Program na tyle prosty że sam nie będzie padał ;-)
A tak przy okazji, co ma robić ten niewidoczny program? Bo może da się
to jeszcze inaczej załatwić, może lepiej.
--
Arivald
Technical Details
Message-ID:
<jfjmmo$rbn$1@news.dialog.net.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mailReferences:
<jfjk1q$ivu$1@opal.futuro.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mail From: Arivald <arivald_@AT_interia_DOT_.pl> Newsgroups: pl.comp.lang.delphi Subject: Re: CreateProcess i zamykanie Date: Mon, 23 Jan 2012 14:18:17 +0100 Organization: Dialog Net Lines: 63 Message-ID: <jfjmmo$rbn$1@news.dialog.net.pl> References: <jfjk1q$ivu$1@opal.futuro.pl> NNTP-Posting-Host: poczta.pgs-soft.com Mime-Version: 1.0 X-Trace: news.dialog.net.pl 1327324696 28023 62.87.249.67 (23 Jan 2012 13:18:16 GMT) X-Complaints-To: abuse@dialog.net.pl NNTP-Posting-Date: Mon, 23 Jan 2012 13:18:16 +0000 (UTC) User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:9.0) Gecko/20111222 Thunderbird/9.0.1 In-Reply-To: <jfjk1q$ivu$1@opal.futuro.pl> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit