Windows mesajlarını yakalama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
emrahozten
Üye
Mesajlar: 33
Kayıt: 09 Ağu 2010 01:28

Windows mesajlarını yakalama

Mesaj gönderen emrahozten »

Arkadaşlar mesela delphide bir program hazırladım. Programım arka planda çalışırken normal günlük işler windowsta yapılıyor. Bu esnada windowsun uyarı ve hataları varya, showmessage şeklinde çıkıyor. Ben programda eğer windows hatası çıkarsa şunu şuraya kaydet gibi birşey yapmak istiyorum. Yani windowsun verdiği hata showmessagelerini nasıl yakalayıp kontrol edebilirim.
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: Windows mesajlarını yakalama

Mesaj gönderen thelvaci »

Bir RootKit yazmayı biliyor ve Kernel API'lerine kanca atabiliyorsanız dediğiniz şey elbette mümkün. Ama bu pek derin bir bilgi gerektirir.
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: Windows mesajlarını yakalama

Mesaj gönderen emin_as »

Eger amacın senin programın verdiği istisnaları/exceptionları yakalamaksa, application üzerinden bunu yapabilirsin.
Ana formunun create procedure une aşagıdaki kodu yaz

Kod: Tümünü seç

Application.OnException:=IstisnaYakala;
Anaformunun tanımının oldugu yere yeni bir procedure ekle

Kod: Tümünü seç

procedure IstisnaYakala( Sender : TObject; E : Exception );
İstisna/exception olunca ne yapılacagını Istisnayakala procedure unde tanımla.

Kod: Tümünü seç

procedure Torm1.IstisnaYakala( Sender : TObject; E : Exception );
  procedure Hata(s1:String);
  begin
      if MessageDlg( s1+ #13#10 + E.Message+#13#10+'Durdur`u seçerseniz program kapatılacaktır',
                mtError, mbAbortIgnore,  0 ) = mrAbort then      Application.Terminate;
   end;
begin
  if (E is ESocketError) then Hata('Soket Bağlantı Hatası');
  if (E is EIBInterbaseError) then Hata('Firebird Veritabanı Hatası');
  if (E is EIBClientError) then Hata('Firebird Veritabanı Hatası');
end;
emrahozten
Üye
Mesajlar: 33
Kayıt: 09 Ağu 2010 01:28

Re: Windows mesajlarını yakalama

Mesaj gönderen emrahozten »

Hayır amacım benim programın verdiği mesajları değil. Genişçe şöyle anlatayım daha açıklayıcı olsun, kafanızda canlansın. Şimdi çalıştığım fabrikada samsungun web tabanlı programını kullanıyoruz. Oraya ürünün barkodunu okuttuğumuzda olumluysa web üzerinden onların database ine o barkodu kayıt atıyor. Bende keyboard hook programı yaptım. Aynı zamanda onların sistemine kayıt atarken benim programda bizim sisteme kayıt atıyor. Buraya kadar sorun yok. Ama eğer barkod hatalıysa onların sistemde internet explorer uyarı mesajı veriyor, tamam deyip geçiyorsun ve onların sistemine kayıt atmamış oluyor, ama benim keyboard hook programına kayıt gidiyor. Benim keyboard hook programına eklemek istediğim, eğer internet exporer uyarı mesajı verirse bizim sisteme atılan en son kayıt silinsin. Bu sayede onların sistemine gitmeyen kayıt bizde de olmayacak ve sayılar birbirini tutacak. Biraz uzun ama istediğim açıklayıcı oldu sanırım.
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: Windows mesajlarını yakalama

Mesaj gönderen emin_as »

Karışık görünüyor, eger web kodlarına müdahale edebiliyorsanız (php ve asp ile yazıldıysa), hook işine girmeden barkod kodunun dogruluguna göre mesaj göndererek işlem yapabilirsiniz.

Hook işlemleriyle ie deki mesajları yakalamanın saglıklı sonuç verecegini sanmıyorum.
emrahozten
Üye
Mesajlar: 33
Kayıt: 09 Ağu 2010 01:28

Re: Windows mesajlarını yakalama

Mesaj gönderen emrahozten »

Ya aslında internet explorerdaki olayların nereye log attığını bilebilsem, txt uzantılı dosyadan o sabit çıkan kelimeleri arattırıp bi sorgu kurabilirim, eminim explorarda bi uyarı mesajı çıktığında bi yere log atıyodur ama onu bulamadım işte, onu bulsam sorun çözülecek.
Cevapla