"Application.Run;" Uygulama kapatıldığında normalde çalışır. Ancak, kullanıcı Windows’ı yeniden başlattığında veya kapattığında bu noktaya asla ulaşılamaz.Delphi: Application.Run kodu, kullanıcı yeniden başlatılıyor/kapanıyorsa çalıştırılamıyor
Bu, WM_ENDSESSION değerini yakalamadan çözülebilir mi? (ve herhangi bir formu içermeyen kodun, dpr'nin sonundaki application.run öğesinden sonra kalmasını istiyorum)
, teşekkür ederim! – hikari
Bu yöntem aslında bazı kötü sonuçları vardır .. Herhangi bir nedenle bir form "sıkışmış" ise, formlar yok edilmeden önce OnTerminate çağrılabilir, yani, örneğin, bir formun yakın olayı bazı nesnelere erişiyorum OnTerminate proc, bir istisna alacak. (yani, birkaç saniye içinde zaman aşımına bağlı bir engelleme soketinde bir GET yapıyorum, sonra uygulamayı kapatmak için X'i tıklıyorum, herhangi bir form kapatılmadan ve yok edilmeden önce OnTerminate çağrılacak). İdeal olarak, kodu .Run'dan sonra bırakabilmeliyiz; Bir sistem kapatma durumunda neden yapılmaz? – hikari
@Hikari - Formlardan ayrılan bir yer arıyor gibiydiniz. Eğer durum bu değilse, neden kodunuzu bu formdaki bir mesaj işleyicisine koymuyorsunuz? TApplication bir WM_ENDSESSION aldığında, WM_QUIT mesajının sonlanmasını beklemez, bu nedenle Run'dan sonraki ifadeler çalışmaz. –