Delphi Can

Orjinalini görmek için tıklayınız: Application Terminate Olayını Nasıl Yakalarım?
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Sayfalar: 1 2
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.
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.
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 ?
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.
Kıymetli bilgiler için teşekkürler.
(18-10-2018, Saat: 08:09)3ddark Adlı Kullanıcıdan Alıntı: [ -> ]Kıymetli bilgiler için teşekkürler.

İşinize yaradı mı ?
(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 ?
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.
(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
(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.
Sayfalar: 1 2