Geri Git   SanalTahrip Bilişim Forumları > Genel > Programlama

Programlama Delphi,Visual Basic,C/C++,Pascal,Python,Kylix,Lazarus,Glade,Perl,Mono vb yazılımlar hakkında döküman paylaşabileceğiniz ve soru sorabileceğiniz forum alanızımıdır.

Tags: , , , ,

Yeni Konu Gönder Yanıtla
 
LinkBack Konu Araçları
Eski 03-12-2009   #1 (permalink)
Üye
Super Moderator
Avatar
 
ReKoBaa_61 kullanıcısının avatarı
Bilgiler
ReKoBaa_61 ReKoBaa_61 Çevrimdışı
Giriş: Jul 2006
Yaş: 23
Mesaj: 4,711
Konuları: 4589
Karizma
İtibar Gücü: 10
Karizma Puanı : 30
Karizma Seviyesi:
ReKoBaa_61 is on a distinguished road
Level
 Seviye: 50  
Ruh Hali:

Level: 50 [♥ Bé-Yêu ♥♥ Bé-Yêu ♥♥ Bé-Yêu ♥♥ Bé-Yêu ♥♥ Bé-Yêu ♥]
Paylaşım: 247 / 1238
Güç: 1570 / 20240
Tecrübe: 55%

Teşekkür Tablosu

Ettiği Teşekkür: 0
92 Mesajına 139 Kere Teşekkür Edlidi
Varsayılan (Delphi ile)Windows’un kapanma anının tespiti

Bu Alana Reklam Vermek İstiyorsanız Buraya Tıklayınız


Windows'un kapanma anının yakalanabilmesi için, Windows tarafından kapanmadan önce yayınlanan, WM_EndSession mesajı yakalanmalıdır.

Mesaj yakalama yordamı, uygulama ana form sınıfının, Private bölümünde şu şekilde tanımlanır.Kodları Renklendirmek isterdim ama Alıntı Ve Çok Kastı [img]images/smilies/frown.gif[/img]



procedure WMEndSession(var Msg : TWMEndSession); message WM_ENDSESSION;

Mesaj yakalama yordamının kendisi ise, Implementation bölümünde aşağıdaki gibi yaratılır.



procedure TForm1.WMEndSession(var Msg : TWMEndSession);

begin

if Msg.EndSession = TRUE then

ShowMessage('Windows kapatılıyor. ');

inherited;

end;





veya





procedure TForm1.WMQueryEndSession(var Msg : TWMQueryEndSession);

begin

if MessageDlg('Windows kapansınmı ?', mtConfirmation, [mbYes,mbNo], 0) = mrNo then

Msg.Result := 0

else

Msg.Result := 1;

end;





Windowsun kapandığını tespit eden bir bileşen kodu aşağıdadır.





unit winshut;

interface

uses

Messages, SysUtils, Classes, Forms, Windows;

type

TkapanmaOlayi = procedure (Sender: TObject; var TamamKapat: boolean) of object;



type

TSezonuKapat = class(TComponent)

private

FUYG: THandle;

FParent: THandle;

FESKIWINYORD: pointer;

FYeniPencereYordami: pointer;

KAPANIRKEN: TkapanmaOlayi;

TamamKapat: boolean;

procedure YeniPencereYordami(var MESAJ: TMessage);

public

constructor Create(AOwner: TComponent); override;

destructor Destroy; override;

procedure Loaded; override;

published

property WINKAPANIS: TkapanmaOlayi read KAPANIRKEN write KAPANIRKEN;

end;



procedure Register;



implementation



constructor TSezonuKapat.Create (AOwner : TComponent);

begin

inherited Create(AOwner);

TamamKapat := TRUE;

FUYG := Application.Handle;

FParent := (AOwner as TForm).Handle;

FYeniPencereYordami := MakeObjectInstance(YeniPencereYordami);

end;



destructor TSezonuKapat.Destroy;

begin

SetWindowLong(FUYG, GWL_WndProc, longint(FESKIWINYORD));

FreeObjectInstance(FYeniPencereYordami);

inherited Destroy;

end;



procedure TSezonuKapat.Loaded;

begin

inherited Loaded;

FESKIWINYORD := pointer(SetWindowLong(FUYG, GWL_WndProc,longint(FYeniPencereYordami)));

end;



procedure TSezonuKapat.YeniPencereYordami(var MESAJ: TMessage);

begin

with MESAJ do

begin

if (Msg=WM_QUERYENDSESSION) then

begin

if Assigned(KAPANIRKEN) then KAPANIRKEN(Self,TamamKapat);

if TamamKapat then

Result := CallWindowProc(FESKIWINYORD, FUYG, Msg, wParam,lParam)

else

Result := 0;

end

else

Result := CallWindowProc(FESKIWINYORD, FUYG, Msg, wParam,lParam);

end;

end;



procedure Register;

begin

RegisterComponents('Kitap', [TSezonuKapat]);

end;



end.
__________________
!!!FORUMDAKİ ONLİNE FİLMLERİ (DivX) NASIL İZLERİM!!![Linkleri görebilmek için üye olmalısınız. Üye olmak için tıklayınız...]      [Linkleri görebilmek için üye olmalısınız. Üye olmak için tıklayınız...] [Linkleri görebilmek için üye olmalısınız. Üye olmak için tıklayınız...]      [Linkleri görebilmek için üye olmalısınız. Üye olmak için tıklayınız...]


[Linkleri görebilmek için üye olmalısınız. Üye olmak için tıklayınız...]      [Linkleri görebilmek için üye olmalısınız. Üye olmak için tıklayınız...]

ReKoBaa_61 Çevrimdışı  
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Share on Facebook
Alıntı Yaparak Cevapla
Konuyu Beğendin mi ? O Halde Konuyu Arkadaşınız ile Paylaşın =)
Okumuş Olduğunuz Sayfayı E-Mail ile Arkadaşınız ile Paylaşın !
Yanıtla

Bookmarks


Şu an bu konuyu görüntüleyen kullanıcı sayısı: 1 (0 üye ve 1 misafir)
 
Konu Araçları

Gönderme Kuralları
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Açık
SimgelerAçık
[IMG] kodu Açık
HTML kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık



Saat 01:52 AM.