Article View: pl.comp.lang.delphi
Article #334891Re: CreateProcess i zamykanie
From: Arivald
Date: Mon, 23 Jan 2012 15:12
Date: Mon, 23 Jan 2012 15:12
66 lines
3816 bytes
3816 bytes
W dniu 2012-01-23 14:40, GAD Zombie pisze: > W dniu 2012-01-23 14:18, Arivald pisze: >> 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 > > Sprawdze to, chociaz skoro efekt ten sam to zadna roznica ;) Różnica taka że z CREATE_NO_WINDOW okno konsoli nie jest tworzone, a z SW_HIDE jest tworzone tylko nie pokazywane. Ale to szczegół. >> Jeśli to Twój program (możesz go zmienić) to przerób go tak żeby się sam >> zamykał jak główny padnie. > > Wlasnie nie jest moj i nie mam na to wplywu. > >> 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. > > Tego raczej nie obejde. To program w javie, ktory stoi dluzszy czas i > jest jakby serwerem dla mojej aplikacji. Pozwala na komunikacje ze soba > przez tcp/ip. Tamten jest napisany w javie i odpalany jest przez > java.exe (...) i to wlasnie odpala sie w tym oknie konsolowym. > Wszystko gra do momentu, jesli moj program padnie. Wtedy tamten zostaje > uruchomiony i zle to wyglada. Chcialbym, zeby tez sie zawsze zamykal. > > Myslalem juz o osobnym malym programie, ktory bedzie tego wszystkiego > pilnowal, ale tym sposobem uruchamiam juz 3 rozne aplikacje > jednoczesnie, zeby dzialala wlasciwie jedna, stad takie rozwiazanie mi > sie nie podoba i szukam innej metody. > > Czy naprawde nie da sie uruchomic aplikacji tak, zeby byla "dzieckiem" > procesu, ktory ja uruchomil? > Nie w Windows. Opcja jest taka żeby dopisać klasę javy, owijkę, i zamiast wołać w linii komend oryginalną klasę wołać swoją. A Twoja najpierw nawiąże połączenie z aplikacją (np nowy wątek i sprawdzanie czy okno aplikacji istnieje, jak już nie to kill) a potem uruchomi oryginalną klasę, jej funkcję main(). Zadziała jeśli JAR nie jest podpisany cyfrowo. Ale do tego musiał byś mieć kogoś z Javą pod ręką. A jeśli nie, to tylko pozostaje własny program-nadzorca. Możesz też spróbować tamtą aplikację odpalić w swoim procesie, używając jvm.dll z pakietu Javy. Wtedy, jakkolwiek Twoja aplikacja skończy żywot, aplikacja Javy też zostanie zakończona. Więcej w linku: http://home.pacifier.com/~mmead/jni/delphi/JEDI/DOCS/delphi-jni-3.html -- Arivald
Technical Details
Message-ID:
<jfjtdd$upj$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> <jfjmmo$rbn$1@news.dialog.net.pl> <jfjntq$rnv$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 16:12:47 +0100 Organization: Dialog Net Lines: 67 Message-ID: <jfjtdd$upj$1@news.dialog.net.pl> References: <jfjk1q$ivu$1@opal.futuro.pl> <jfjmmo$rbn$1@news.dialog.net.pl> <jfjntq$rnv$1@opal.futuro.pl> NNTP-Posting-Host: poczta.pgs-soft.com Mime-Version: 1.0 X-Trace: news.dialog.net.pl 1327331565 31539 62.87.249.67 (23 Jan 2012 15:12:45 GMT) X-Complaints-To: abuse@dialog.net.pl NNTP-Posting-Date: Mon, 23 Jan 2012 15:12:45 +0000 (UTC) User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:9.0) Gecko/20111222 Thunderbird/9.0.1 In-Reply-To: <jfjntq$rnv$1@opal.futuro.pl> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit