Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Application Terminate Olayını Nasıl Yakalarım?
#1
Merhaba,

Kullanılan sürüm Delphi 7

Yazılan uygulama Debug Modda çalışırken Program Reset yaparak kapatıldığından veya normal çalışma/Debug Mod fark etmeksizin yazılan uygulama görev yöneticisinden sonlandırma yapıldığında Close/Destroy yakalamıyor. Ana formun Destroy veya Close olayına da gelmiyor.

Görev yöneticisinden veya Debug modda sonlandırma işlemi sırasında başka bir deyişle program ne şekilde kapatılırsa kapatılsın ben bazı komutlar çalıştırmak istiyorum. Bu kapatılma olayını nasıl yakalarım. 

Bu yakalama işlemi ile Resourcefont kullanmıştım. Program kapatılırken RemoveFontResource ile fontu geri almak ve buna ek olarak birkaç dosya oluşturuyorum bu dosyaları DeleteFile geri silmem gerekiyor.
PostgreSQL - Linux - Delphi, Poliüretan
WWW
Cevapla
#2
Merhaba,
Teknik olarak mümkün değil, dersem herhalde abartmamış olurum. Ancak ikinci bir servis uygulaması ile belirttiğiniz durumu kontrol altına alabilirsiniz.
DelphiCan'dır!
Cevapla
#3
Selamlar
Çok konuya hakim değilim. Sadece bir fikir başka bir fikri doğurur düşüncesi ile yazıyorum.
Taskmaneger ile kill edilen bir uygulamaya windows önce bir mesaj gönderiyor diye okumuştum zamanında
bu yakalanabilirse buradan yola çıkılarak birşeyler yapılabilirmi ?
Bu dünyada kendine sakladığın bilgi ahirette işine yaramaz. 
Cevapla
#4
Merhaba, uygulamanızın anormal yollar ile sonlandırıldığını bir çok yol ile tespit edebilirsiniz ama görev yöneticisinden (TerminateThread ,TerminateProcess vb) sonlandırılma işini yakalayabilmenin maalesef kolay bir yolu yok.

 Eğer uygulamanız 1 dakika kadar açık kalabilecek ve ardından sonlandırılacak ise; bu durumda aşağıdaki link işinize yarayacaktır Wink 

Kardeş sitemizden Challenge 9.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#5
Kıymetli bilgiler için teşekkürler.
PostgreSQL - Linux - Delphi, Poliüretan
WWW
Cevapla
#6
(18-10-2018, Saat: 08:09)3ddark Adlı Kullanıcıdan Alıntı: Kıymetli bilgiler için teşekkürler.

İşinize yaradı mı ?
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#7
(17-10-2018, Saat: 15:41)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Merhaba, uygulamanızın anormal yollar ile sonlandırıldığını bir çok yol ile tespit edebilirsiniz ama görev yöneticisinden (TerminateThread ,TerminateProcess vb) sonlandırılma işini yakalayabilmenin maalesef kolay bir yolu yok.

 Eğer uygulamanız 1 dakika kadar açık kalabilecek ve ardından sonlandırılacak ise; bu durumda aşağıdaki link işinize yarayacaktır Wink 

Kardeş sitemizden Challenge 9.

Challange'lere devam mı etseniz acaba burada ?
WWW
Cevapla
#8
Verdiğiniz linkteki uygulama örneğini test ettim. Çok güzel sorunsuz çalışıyor. Başka kritik uygulamalarda kullanılabilir.

Fakat bu şekilde ki kullanım benim yapacağım işlem ve programı kullanan son kullanıcı topluluğuna pek hitap etmediği için şu anki sorunum için bu şekildeki bir çözüm kullanmayacağım.

Olayın çıkış noktası da yeni bir font var. Bu fontun özelliği %20 toner tasarrufu sağlıyormuş. Bunu yazıcı formlarında kullanabilir miyiz? şeklinde bir sorun ile başladı. Bütün kullanıcıların bilgisayarında bu font mevcut değil ve her kullanıcının bilgisayarına fontu tek tek eklemek mantıklı olmadığı için bu şekilde kullanmak istedim.

Sonuçta bizim yaptığımız uygulamalar son kullanıcıya hitap etmeli. Benim son kullanıcı topluluğum biraz GARİP bir topluluk  Confused

Asıl sorunum 
  ResStream := TResourceStream.Create(HInstance, pResourceName, 'FONT_TTF');
  try
    ResStream.SavetoFile(pResourceName + '.ttf');
  finally
    ResStream.Free;
  end;

  AddFontResource('font_dosya_adi.ttf');
  SendMessage(Application.Handle, WM_FONTCHANGE, 0, 0);
ile font ekleyip yazıcı formlarında bu fontu kullanacaktım ve işim bittiğinde ise 
if RemoveFontResource(PAnsiChar(FontName + '.ttf')) then
 begin
   SendMessage(Application.Handle, WM_FONTCHANGE, 0, 0) ;
   DeleteFile(PAnsiChar(FontName + '.ttf'));
 end;
ile fontu iptal edip uygulama dizininde geçici olarak oluşturduğum font dosyasını silecektim. Bu işlemi de uygulama ana formu açılırken fontu oluşturup ekledikten sonra uygulama ana formu kapatılırken(Destroy olayında) fontu kaldırıp dosyayı silecektim.

RemoveFontResource yapmadığım zaman bu oluşturduğum font dosyasını silemiyorum. Bu dosya kullanılıyor diyor. Windows tarafından kullanılıyor. Bilgisayarı yeniden başlatınca dosyaya müdahale edebiliyorum. 

Bu sorunu aşmak için başka yol izleyebilirim. Örneğin bu işlemleri her yazdırma işleminden önce ve sonra yapabilirim veya 
AddFontResource
//yerine 
AddFontMemResourceEx
bu şekilde kullanabilirim.
PostgreSQL - Linux - Delphi, Poliüretan
WWW
Cevapla
#9
(18-10-2018, Saat: 08:40)yhackup Adlı Kullanıcıdan Alıntı:
(17-10-2018, Saat: 15:41)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Merhaba, uygulamanızın anormal yollar ile sonlandırıldığını bir çok yol ile tespit edebilirsiniz ama görev yöneticisinden (TerminateThread ,TerminateProcess vb) sonlandırılma işini yakalayabilmenin maalesef kolay bir yolu yok.

 Eğer uygulamanız 1 dakika kadar açık kalabilecek ve ardından sonlandırılacak ise; bu durumda aşağıdaki link işinize yarayacaktır Wink 

Kardeş sitemizden Challenge 9.

Challange'lere devam mı etseniz acaba burada ?

Yeterli katılım ve ilgi olmadığı için devam etmemiştim. Bu durum değişmiş midir acaba Undecided
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#10
(18-10-2018, Saat: 09:06)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı:
(18-10-2018, Saat: 08:40)yhackup Adlı Kullanıcıdan Alıntı: Challange'lere devam mı etseniz acaba burada ?

Yeterli katılım ve ilgi olmadığı için devam etmemiştim. Bu durum değişmiş midir acaba Undecided

Diğer Challange'ları yaptığınız zamanı hatırlıyorum. Kendi adıma konuşuyorum kimi Challange için bilgim yetersiz/daha önce hiç ilgilenmediğim konu olduğu için ve/veya iş yoğunluğunun çok ve zamanımın yeterli olmadığı için yorum adına katkı yapmasam da zaman buldukça takip ediyordum.

Genelde açtığınız Challange'lar internette arayıp nadiren bulunacak veya hiç bulunamayacak kadar değerli konular oluyordu.
PostgreSQL - Linux - Delphi, Poliüretan
WWW
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
Question Delphi formunu nasıl otomatik tam ekran yapabilirim ? erdemklt0 2 324 23-01-2026, Saat: 10:02
Son Yorum: csunguray
  TMS Web Core- REST İşlemlerini Nasıl Yapabilirim? kajmerantime 0 429 13-06-2025, Saat: 14:07
Son Yorum: kajmerantime
  Delphi 7 deki pencereleri nasıl sabitleyebilirim? mxpain 1 555 12-12-2024, Saat: 08:50
Son Yorum: 3ddark
  resimdeki hatanin satirini nasil bulabiliriz. sadikacar60 6 1.111 25-11-2024, Saat: 19:18
Son Yorum: sadikacar60
  Programdaki donmanin sebebi nasil yakalanir. sadikacar60 2 741 17-10-2024, Saat: 18:21
Son Yorum: sadikacar60



Konuyu Okuyanlar: 1 Ziyaretçi