Jak Wykryc moment zabijania aplikacji

0

Witam

Jak Wykryc moment zabijania aplikacji i nie mam tu na mysli zablokowanie eventu onClose ale cos innego.

Mam aplikacje ktora nie ma formatki ale nie jest to aplikacja konsolowa, jest to cos w rodzaju serwisu tyle tylko ze na w98/95 nie ma serwisow wiec jest to po prostu aplikacja bez formatki.

Chcialbym wykryc momet kiedy ktos zabija taka aplikacje aby mogla ona w tym momecie wykonac jakies zadania tzw "porzatkowe" do zabicia tego procesu uzywam TerminateProcess ale nie umiem wykryc w tym procesie tego mometu probowalem kontaraktacji na message WM_ ..... ale to nic nie daje probowalem on destroy ale tez nie dziala ,
moze ktos z was ma jakis pomysl.

Pozdrawiam

0

Nie wiem, czy to jest możliwe. Jak zabijam proces w managerze zadań, to dostaję ostrzeżenie, że proces nie będzie mógł wykonać już żadnych operacji, więc na logikę rzecz biorąc, raczej nie ma żadnego komunikatu, który byłby wysyłany do programu :)

0

Dzieki za zainteresowanie...

Niemniej jesli by bylo tak jak mowiesz to co w sytuacji gdy w Delphi odpalisz program i z task managera zechcesz go zabic to co Ci powie system....sprawdzales.... niemniej na pewno nie zabije Ci tego procesu dlatego wiem ze przechwycenie takkiego momentu jest mozliwe i dlatego szukam rozwiazania.

Pozdrawiam

0

Dlaczego uważasz, że nie zabije tego procesu?

0

sprobuj

0

proponuje taki experyment

formatka a na niej buton

procedure TForm1.Button31Click(Sender: TObject);
var n,i:integer;
begin
for n:=0 to 30000 do
for i:=0 to 30000 do
Application.ProcessMessages;

end;

i kliniac w przycisk....
a teraz z task managera sprobij zabic ta aplikacje uruchomiona z Delphi

0

Mogę bez problemu zabić każdy proces znajdujący się w systemie :). Pokazuje się jedynie ostrzeżenie taskmanagera, ale jak kliknę na ok, to proces natychmiast się zamyka :)

0

To moze inaczej czy ktos wie jak dziala polecenie terminateProcess tzn co ono konkretnie wykonuje bo jaki jest wynik jego dzialania to ja wiem ale zastanawiam sie co ono wysyla do systemu oprucz handla do procesu czy to jest jakis message ?
Wyjasnienie tego bardzo by mi pomoglo

ciekawi mnie jak wyszedl eksperyment?
pozdr

0

no coz
:(((
chyba nik nic nie wie albo zadaje za trudne pytania
szkoda

0

podczas zabijania aplikacji system wysyla szereg komunikatow. najlepiej sprawdzic pod WinSight'em!
najprawdopodobniej (bo nie sprawdzalem, ale z praktyki wiem) sa wysylane nastepujace komunikaty:
WM_CLOSEQUERY
WM_CLOSE
WM_QUIT
WM_DESTROY i wiele innych...

tak jak mowie - sprawdz WinSight'em

0

wielkie dzieki

tyle tylko iz probowalem tego i nic jak ten proces potraktowalem funkcja terminateprocess to po prostu wyparowywal nie dajac zadnego sygnalu iz odebral ktory kolwiek z tych messages
nie wiem moze zle to robilem pisalem cos takiego

np.
procedure onmessage(var msg:Tmessage); message WM_CLOSE
begin
showMessage(inttostr(msg.msg));
end;

i d... blada na zaden nie pokazywal informacji

pozdrawiam

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