uruchamianie aplikacji w czasie zamykanie innej

0

Sie macie.
Mam pytanko: jak podczas zamykania mojego programu włączyć go z powrotem? Użytkownik wyłącza moj program, zamyka się, ale zanim to zrobi uruchamia sam siebie? Próbowałem dać taki kod do OnDestroy:

ShellExecute(0 , 'open' , PAnsiChar(ExtractFilePath(Application.ExeName) + '\mojprogs.exe') , nil , nil , SW_SHOW) ;

ale nie działa, jeżeli użytkownik zabija proces mojego progsu. Jak zrobić, żeby zawsze uruchamiał się ponownie? Thx

0

Po pierwsze:

ShellExecute(0 , 'open' , PChar(Application.ExeName) , nil , nil , SW_SHOW) ;

bo po co wydłużać kod i na dodatek sprawiać, ze nie będzie on działał po zmianie nazwy execa?

Po drugie:
Przy zybiciu procesu nie jest wysyłana do niego żadna informacja. Musiałbyś mieć drugi program uruchomiony w tle, który by sprawdzał, czy tamten działa, ale ta metoda oczywiście nie jest pewna i jest trochę "pokrętna".

Po trzecie:
Trojanik? ;-)

0

po pierwsze:
no racja, racja

po drugie:
Dzięki. A może ktoś ma jeszcze jakieś inne pomysły?

po trzecie:
nichichichi :-D nie, nie trojan, powiedzmy, że hmmm...po prostu potrzebuje napisać programik, który nie bardzo lubi, kiedy nie jest uruchomiony :-). Nic złego nie mam na myśli, słowo :-)

0

Właściwie, to jest na to dość dobry sposób. Możesz przechwytywać wszystkie wywołania TerminateProcess() za pomocą jakiejś biblioteki, jak np. ApiHooks. Sprawdzasz, czy parametrem jest proces twojego programu jeśli nie, wywolujesz prawdziwe TerminateProcess.

0

Dzięki, sprawdzę to. THX [browar]

0

Daj to w OnClose:

Application.Initialize;
Application.CreateForm(TForm1, Form1);// tu dajesz wszystkie formy, jakie masz w projekcie
Application.Run;

Tani chwyt, ale działa;)

0

tomksoft, nie doczytales - mialo byc przy kilowaniu procesu, kiedy to zadne komunikaty nie ida (znaczy nie da sie w nich zareagowac...)

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