🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.delphi
Article #334887

Re: CreateProcess i zamykanie

#334887
From: Arivald
Date: Mon, 23 Jan 2012 13:18
63 lines
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-mail
References: <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