Windowsun kapanış olayı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
borlandx
Üye
Mesajlar: 2
Kayıt: 01 Nis 2008 09:36

Windowsun kapanış olayı

Mesaj gönderen borlandx »

Arkadaşlar ben delphide pcnin nezaman nekadar süre açık kaldığını bulan bir program yazıyorum.
Windows açılır açılmaz programı çalıştırıp açılış süresini veritabanına ekletiyorum.Fakat windows kapanışını program bilemiyor ve kapanış süresi veritabanına eklenmiyor.Delphide windows kapanışını nasıl buluruz windows kapanış olayı nedir.Yardımcı olursanız sevinirim
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Windowsun kapanış olayı

Mesaj gönderen sabanakman »

Bunun için windows kapanma mesajını yakalamanız gerekmektedir.

Kod: Tümünü seç

TFormXYZ = class(TForm)
...
  private
    { Private declarations }
    procedure WMQueryEndSession(var Msg : TWMQueryEndSession);message WM_QUERYENDSESSION;
  public
    { Public declarations }
  end;
end;

procedure TFormXYZ.WMQueryEndSession(var Msg: TWMQueryEndSession);
begin
  inherited;
  //Msg.Result := 1;
  //->Windows kapanıyor, buraya gerekli kodları yazabilirsiniz.
end;
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
umutcanster
Üye
Mesajlar: 153
Kayıt: 14 Tem 2008 12:28

Re: Windowsun kapanış olayı

Mesaj gönderen umutcanster »

hocam kodları denedım win kapanırken herhangi bir tepki alamadım programdan.....

bir örnek proje sunsanız*
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Windowsun kapanış olayı

Mesaj gönderen sabanakman »

Yukarıdaki örnekte bulunan
//->Windows kapanıyor, buraya gerekli kodları yazabilirsiniz.
satırına

Kod: Tümünü seç

ShowMessage('Windows Kapatılıyor');
kodunu yaz, windows kapatılırken kodlar çalışıp mesaj gelecektir.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
umutcanster
Üye
Mesajlar: 153
Kayıt: 14 Tem 2008 12:28

Re: Windowsun kapanış olayı

Mesaj gönderen umutcanster »

daha denemedim hocam fakat
bu sadece kapanma söz konusu olduğundamı işliyor?
yoksa restart , uyku modu ilede çalışabiliyor mu*
umutcanster
Üye
Mesajlar: 153
Kayıt: 14 Tem 2008 12:28

Re: Windowsun kapanış olayı

Mesaj gönderen umutcanster »

Bu kodları çalıştırdığımda..




unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;

type
TTFormXYZ = class(TForm)
private
{ Private declarations }
procedure WMQueryEndSession(var Msg : TWMQueryEndSession);message WM_QUERYENDSESSION;
public
{ Public declarations }
end;

var
TFormXYZ: TTFormXYZ;

implementation

{$R *.dfm}
procedure TFormXYZ.WMQueryEndSession(var Msg: TWMQueryEndSession);
begin
inherited;
//Msg.Result := 1;
ShowMessage('Windows kapanıyor');
end;








end.














hata çıkıyor..
ayrıca özür dilerim fakat ;


[Error] Unit1.pas(24): Identifier redeclared: 'TFormXYZ'
[Error] Unit1.pas(24): ';' expected but ')' found
[Error] Unit1.pas(26): This form of method call only allowed in methods of derived types
[Error] Unit1.pas(13): Unsatisfied forward or external declaration: 'TTFormXYZ.WMQueryEndSession'
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'



hata çıkıyor form'un ismide 'TFormXYZ' budur...


//Msg.Result := 1; bu satırı
Msg.Result := 1;

düzenlediğimdede yine hata çıkıyor acaba uses lerdemi problem var.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Windowsun kapanış olayı

Mesaj gönderen sabanakman »

Bir forma yukarıdaki gibi bir WMQueryEndSession prosedürü eklemek o kadar zor olmasa gerek :wink: .
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
borlandx
Üye
Mesajlar: 2
Kayıt: 01 Nis 2008 09:36

Re: Windowsun kapanış olayı

Mesaj gönderen borlandx »

denedim tıkır tıkır çalışıyor eline sağlık
smokie
Üye
Mesajlar: 72
Kayıt: 01 Tem 2007 10:26

Windowsun kapanış olayı

Mesaj gönderen smokie »

Merhaba,

Konunun üzerinden uzun bir zaman geçmiş, yeni bir konu açmak ismemedim.

win kapanmasını yakalıyor fakat pc kapanmasını engelliyor. neyden olabilir.

tşkler.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Windowsun kapanış olayı

Mesaj gönderen sabanakman »

İlk nokta inherited satırını aynen yazılmasına dikkat etmelisiniz. Eğer inherited satırınız varsa programınızın kendisi kapanmıyordur. onClose ve onCloseQuery olaylarınıza göz atmanızda fayda var.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
smokie
Üye
Mesajlar: 72
Kayıt: 01 Tem 2007 10:26

Re: Windowsun kapanış olayı

Mesaj gönderen smokie »

Kod: Tümünü seç

 procedure TForm1.WMQueryEndSession(var Msg: TWMQueryEndSession);
begin
  inherited;
// Msg.Result := 1;
  //->Windows kapanıyor, buraya gerekli kodları yazabilirsiniz.
  reg('Software\Pc','YarimKaldi', '1');
    Form1.OnCloseQuery:=nil;
  Close;
end;
Söylediğiniz gibi kontrol ettim. bu kez programlar kapanıyor. pc kapanmasında tepki yok.
Cevapla