Nie wiem czy to się sprawdzi, ale zawsze można spróbować globalny hook na TerminateProcess, PostQuitMessage czy EndDialog lub SendMessageX* z WM_QUIT lub WM_DESTROY. Info: * - gdzie X to najczęściej będzie oczywiście A lub W, ale to trzeba by sprawdzić na przykład API Monitorem czy innym tego typu softem. Dla przykładu takie hooki dołaczam wraz z exekami do tego posta. Niestety ta metoda ma taką wadę, że porządne antywirusy jak chocby KAV2010, a być może i wcześniejsze ostrzegają przed zakładaniem globalnego hooka przez te exeki aplikacji. Mniej porządne mogą od razu nastraszyć użytkownika, że uruchamia wirus lub ostrzeżenie zniechęci użytkownika do uruchomienia procesu. W takim przypadku trzeba kombinować, ale jak to mnie nie interesuje bo nie tworzę i nie chcę tworzyć malware. Można pewnie kombinować z pisaniem usługi i takie tam, ale po co. Jeśli nie masz złych zamiarów i przekonasz o tym użytkownika dołączając na przykład kod źródlowy do projektu w tak przejrzystym (według mnie) języku jakim jest (dla mnie i pewnie nie tylko dla mnie) Delphi to nie będzie problemów. Tyle ode mnie, bo pora iść spać, a coś więcej i może konkretniej może doradzą Tobie inni użytkownicy forum.