Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Balirli saat aralığında kodu çalıştırmak
#1
Herkese merhaba,

procedure TFrmAna.DosyaYaz(veri: string);
var
i : integer;
begin
 Memo1.Lines.Clear;
 Memo1.Lines.LoadFromFile(ini_yol);
 for i :=0  to memo1.Lines.Count-1  do begin
   if Copy(memo1.Lines.Strings[i],1,12)='SAYAC=' then begin
      memo1.Lines.Strings[i]:='SAYAC='+veri;
   end;
 end;
 memo1.Lines.SaveToFile(ini_yol);
end;

Delphi 7 de yukarıdaki kodu günde iki kere çalıştırıcam yani saat 22:00 olduğunda bir kez ve sabah 09:00' dan sonra bir kez olarak.
22:00 ile 08:59 arasında sayaç değeri 1,
09:00 ile 21:59 arasında sayaç değeri 2 olacak
bu zamanlama döngüsünü nasıl yapabilirim?
Cevapla
#2
Program sürekli açık kalacaksa program içerisinde timer kullanarak. Ama tavsiyem Tray de çalışan ufak bir program yazarak yine Timer içerisinden istediğinizi yaptırabilirsiniz. İyi çalışmalar.
Cevapla
#3
(20-05-2020, Saat: 01:29)Ahmet İPEKÇİ Adlı Kullanıcıdan Alıntı: Program sürekli açık kalacaksa program içerisinde timer kullanarak. Ama tavsiyem Tray de çalışan ufak bir program yazarak yine Timer içerisinden istediğinizi yaptırabilirsiniz. İyi çalışmalar.

Cevabınız için teşekkürler hocam, saat aralığında çalışması için nasıl bir kod yazmam gerekiyor.

if(suanki_zaman>'09:00' AND suanki_zaman<'22:00'){

 // Gündüz kodu calistir

} else {

 // Gece kodu calistir
}

bu kodu delphi 7 de nasil yazabilirim?
Cevapla
#4
Yapmak istediğiniz şey izin verdiğiniz saatler aralığında programda işlem yapılabilmesi ve geriye kalan zamanda kullanılamaması durumu ise mevcut zamanı doğrulatabilmeniz için referans bir cihaz gerekiyor. Yani sunucu saatine bakarak hareket etmeniz gerekiyor. Diğer türlü kullanıcı bu durumu keşfedip 23:00'te saati sabah 09:00 yaparak kullanmaya devam edebilir.

İhtiyacınızı daha belirgin bir şekilde ifade ederseniz daha uygun çözüm önerilerinde bulunabiliriz.
Cevapla
#5
(20-05-2020, Saat: 03:19)Abdullah ILGAZ Adlı Kullanıcıdan Alıntı: Yapmak istediğiniz şey izin verdiğiniz saatler aralığında programda işlem yapılabilmesi ve geriye kalan zamanda kullanılamaması durumu ise mevcut zamanı doğrulatabilmeniz için referans bir cihaz gerekiyor. Yani sunucu saatine bakarak hareket etmeniz gerekiyor. Diğer türlü kullanıcı bu durumu keşfedip 23:00'te saati sabah 09:00 yaparak kullanmaya devam edebilir.

İhtiyacınızı daha belirgin bir şekilde ifade ederseniz daha uygun çözüm önerilerinde bulunabiliriz.

Merhaba hocam ilginiz icin teşekkür ederim, başlangıç ve bitiş saatlerini ini dosyasından alacağım için manuple etmesi sıkıntı değil hocam sistem saatini referans alabilirim.

KURAL : 09:00 ile 21:59 arası GÜNDÜZ MODU,  22:00 ile 08:59 arası GECE modum.

Kısaca şöyle bahsedeyim bilgisayar açık olduğu sürece çalışan bir programım var. program çalışır durumdayken,
saat 09:00 olduğunda 'GÜNDÜZ MODUNDA ÇALIŞIYORSUN' , Saat 22:00 olduğunda 'GECE MODUNDA ÇALIŞIYORSUN' diye ekranda mesaj çıkartmak istiyorum.  Eğer kullanıcı 09:50 de bilgisayarı açtıysa KURAL bölümünde belirlediğim saat aralığına göre mesajı göstermesi gerekiyor.

NOT : Göstereceğim mesaj kullanıcının işlem yapmasını engellemeli, yani başka bir programda çalışıyor olsada benim çıkarttığım mesajda OK butonuna basmadan bilgisayarda başka bir işlem yapamamalı.

Yapmak istediğim şeyin detayı bu şekilde umarım anlatabilmişimdir.
Cevapla
#6
Gece gündüz modunun senaryonuza göre tespit edilmesi için aşağıdaki gibi bir yapı kullanabilirsiniz.
Yukarıda uyardıkları gibi sistem saati değiştirilirse işlerde değişir  Smile

var
 tsabah,tgece,tsimdi: Ttime;
begin

 tsabah := strtotime('09:00:00');   // ini dosyasından bu değer çekilebilir
 tgece  := strtotime('21:00:00');   // ini dosyasından bu değer çekilebilir

 tsimdi := GetTime();

 if (tsimdi > tsabah) and (tsimdi < tgece) then
 begin
   showmessage('Gündüz Modu');
 end
 else
 begin
   // senaryonuza göre gece modu için parçalı kontrol (gece--23:59:59 ve 00:00:00- sabah)
   // yapmaya gerek yok gündüz şartı sağlanmıyorsa gecedir.
   showmessage('Gece Modu');
 end;

Benzer bir şablon kod örneği zaten yukarıda verilmiş, fark etmediğim için tekrar gibi oldu.

3. Edit: Oruç hali Smile  konu sahibinin C kodunu, pascal gibi algıladım. Aslında nasıl pascala çevrileceğini soruluyormuş. Bu mesajda cevap niteliğinde olmuş oldu.
Cevapla
#7
(20-05-2020, Saat: 09:22)frmman Adlı Kullanıcıdan Alıntı: Gece gündüz modunun senaryonuza göre tespit edilmesi için aşağıdaki gibi bir yapı kullanabilirsiniz.
Yukarıda uyardıkları gibi sistem saati değiştirilirse işlerde değişir  Smile

var
 tsabah,tgece,tsimdi: Ttime;
begin

 tsabah := strtotime('09:00:00');   // ini dosyasından bu değer çekilebilir
 tgece  := strtotime('21:00:00');   // ini dosyasından bu değer çekilebilir

 tsimdi := GetTime();

 if (tsimdi > tsabah) and (tsimdi < tgece) then
 begin
   showmessage('Gündüz Modu');
 end
 else
 begin
   // senaryonuza göre gece modu için parçalı kontrol (gece--23:59:59 ve 00:00:00- sabah)
   // yapmaya gerek yok gündüz şartı sağlanmıyorsa gecedir.
   showmessage('Gece Modu');
 end;

Benzer bir şablon kod örneği zaten yukarıda verilmiş, fark etmediğim için tekrar gibi oldu.

3. Edit: Oruç hali Smile  konu sahibinin C kodunu, pascal gibi algıladım. Aslında nasıl pascala çevrileceğini soruluyormuş. Bu mesajda cevap niteliğinde olmuş oldu.

Hocam cok tesekkur ederim, verdiginiz kod çok işime yaradı.
Şöyle bir sıkıntım var, bu programın çalışacağı bilgisayarda farklı programlarda kullanılıyor, benim programım sadece mesajı çıkartacak 
kullanıcının bu mesajı mutlaka görmesini istiyorum yani farklı bir program da kullanıyor olsa benim mesajımı görüp ok dedikten sonra bilgisayarı kullanabilmesini istiyorum. Bunun bir yolu var mı?
Cevapla
#8
(20-05-2020, Saat: 05:18)onurakman Adlı Kullanıcıdan Alıntı:
(20-05-2020, Saat: 03:19)Abdullah ILGAZ Adlı Kullanıcıdan Alıntı: Yapmak istediğiniz şey izin verdiğiniz saatler aralığında programda işlem yapılabilmesi ve geriye kalan zamanda kullanılamaması durumu ise mevcut zamanı doğrulatabilmeniz için referans bir cihaz gerekiyor. Yani sunucu saatine bakarak hareket etmeniz gerekiyor. Diğer türlü kullanıcı bu durumu keşfedip 23:00'te saati sabah 09:00 yaparak kullanmaya devam edebilir.

İhtiyacınızı daha belirgin bir şekilde ifade ederseniz daha uygun çözüm önerilerinde bulunabiliriz.

Merhaba hocam ilginiz icin teşekkür ederim, başlangıç ve bitiş saatlerini ini dosyasından alacağım için manuple etmesi sıkıntı değil hocam sistem saatini referans alabilirim.

KURAL : 09:00 ile 21:59 arası GÜNDÜZ MODU,  22:00 ile 08:59 arası GECE modum.

Kısaca şöyle bahsedeyim bilgisayar açık olduğu sürece çalışan bir programım var. program çalışır durumdayken,
saat 09:00 olduğunda 'GÜNDÜZ MODUNDA ÇALIŞIYORSUN' , Saat 22:00 olduğunda 'GECE MODUNDA ÇALIŞIYORSUN' diye ekranda mesaj çıkartmak istiyorum.  Eğer kullanıcı 09:50 de bilgisayarı açtıysa KURAL bölümünde belirlediğim saat aralığına göre mesajı göstermesi gerekiyor.

NOT : Göstereceğim mesaj kullanıcının işlem yapmasını engellemeli, yani başka bir programda çalışıyor olsada benim çıkarttığım mesajda OK butonuna basmadan bilgisayarda başka bir işlem yapamamalı.

Yapmak istediğim şeyin detayı bu şekilde umarım anlatabilmişimdir.

Merhaba,

Bu tarz işlemler için SQL yedekleme yazılımlarının yaptığı temel yaklaşımı referans alabilirsiniz.

Biraz açıklamak gerekirse; 

Sizin için her ne kadar iki saat arası gibi bir kavram olsa da TTimer ve diğer zamanlayıcılar için döngüden ibaret olacaktır. Eğer her saat başının tanımını bir yerde tutarsanız veya daha kısa döngüler halinde saatleri yakalayabilirseniz işiniz daha kolay olur. 

Key-Value olarak 24 tane kayıt atın ini dosyanıza.


Örn.
(İlk iki karakter saati, son karakter Dark Mode aktif/pasif bilgisi)

001
011
021
031
041
..
..
090
100
110
120
..
180
191
201


Daha sonra programın içerisinden 60 dakikada bir aktif olacak Timer ekleyin. Timer tetiklendiği sıradaki majör saatin durumuna göre karar verin. (Örn. şuan saat 13:55, 13'e 55dk, 14'e 5 dk var. Saat 14'ün ayarını çekin ve uygulayın.) Bu şekilde en pratik yöntemi sağlamış olursunuz.

Gerekenler:

1 adet TTimer
1 adet IniFile
2 adet tema desteği

Yukarıda vermiş olduğum örnekle birlikte ekran parlaklık oranını ve karanlık seviyesini de optimize edebilirsiniz, açık kapalı değil, geçiş tonlarını da uygulayabilirsiniz.

Kaç saat gündüz kaç saat gece modu yapacağınızı belirledikten sonra Gece ve Gündüz dizileri oluşturup kaçındı index olduğuna göre koyuluk sağlayabilirsiniz.
Cevapla
#9
Bir kod çalışması hazırladım.

Çözümünüzü bulmuşsunuz sadece lazım olan başkaları için burada aranıp bulunabilir olsun diye konsept olarak paylaşıyorum.

* Kullanım örneğinde göreceğiniz gibi, başlangıç bitiş aralığı olan sınırsız sayıda kayıt girebilirsiniz. Bunları bir INI dosyası, web ortamı vb. kayıt altında tutabilir, tekrar dinamik olarak girişini sağlayabilirsiniz. Idea

* RECORD tipindeki TTimeRec kısımını dilediğiniz gibi yapılandırarak, ilgili saat aralığında kullanmak istediğiniz veri başlık(lar)ını düzenleyebilirsiniz. Örneğin ekran parlaklığı, ses seviyesi, vs.vs.

* Sistem bir timer içerisinde sürekli çalışacağı değerlendirilerek bir mesaj ekrana yansıtıldığında aynı ilgili saat diliminde yeniden aynı mesajın çıkmasının önüne geçmek / engellemek üzerine kurulu. aHandled boolean değişkeni ilgili saat dilimindeki bir mesaj ekrana yansıtılınca TRUE oluyorken, daha önce TRUE olmuş diğer saat dilimleri de ResetHandled proc ile varsayılana, FALSE ile yeniden mesaj vermeye hazır hale getiriliyor.

* Mekanizma kurulduktan sonra dilediğinizi yapabilirsiniz. En aşağıdaki kullanım örneğinde herhangi bir TIMER koymadım, yerine test için bir button koydum. Ancak kullanırken tabiatıyla koyacaksınız ve buttona basınca olan kısmı TIMERonTIMER içerisine yerleştireceksiniz. Interval ne ise ona göre saniyede, dakikada, saatte dilediğiniz periyotta art arda çalıştırmaya uygundur. Yineleyeyim, mesaj ilgili saat aralığında sadece bir defa tetiklenecektir.

Helper Unit kısmı

unit MessageTimeHelperU;

interface

Uses Dialogs;

Type
 TTimeRec = record
   aTimeBegin,
   aTimeEnd  : TTime;
   aMsg      : String;
   aHandled  : boolean;
 end;
 TTimes = array of TTimeRec;

 TTimeHelper = class( TObject )
 protected
 private
   FDefaultMsg : String;
   FTimeRec    : TTimeRec;
   FTimes      : TTimes;
   FShowDefMsg : boolean;
   procedure   ResetHandled(aTimes: TTimes; aException: Integer);
 public
   constructor Create;
   destructor  Destroy; override;
   property    ShowDefaultMessage : boolean read FShowDefMsg  write FShowDefMsg;
   property    DefaultMessage     : String  read FDefaultMsg  write FDefaultMsg;
   procedure   MessageTime( aTime : TTime );
   procedure   AddTimeRec(  aTimeRec : TTimeRec );
end;

implementation

{ TTimeHelper }

procedure TTimeHelper.AddTimeRec(aTimeRec: TTimeRec);
begin
 if High( FTimes ) = -1 then
   SetLength( FTimes, 1 )
 else
   SetLength( FTimes, High(FTimes) + 2 );

 FTimes[High(FTimes)].aTimeBegin := aTimeRec.aTimeBegin;
 FTimes[High(FTimes)].aTimeEnd   := aTimeRec.aTimeEnd;
 FTimes[High(FTimes)].aMsg       := aTimeRec.aMsg;
 FTimes[High(FTimes)].aHandled   := aTimeRec.aHandled;
end;

constructor TTimeHelper.Create;
begin
 inherited;

 FDefaultMsg := 'Default Message';
 FShowDefMsg := False;
end;

destructor TTimeHelper.Destroy;
begin

 inherited;
end;

procedure TTimeHelper.ResetHandled( aTimes: TTimes; aException: Integer );
var
 i : Integer;
begin
 for i := Low(aTimes) to High(aTimes) do
   if i <> aException then
     aTimes[i].aHandled := False;
end;

procedure TTimeHelper.MessageTime(aTime: TTime);
var
 i       : Integer;
 bFound  : boolean;
begin
 i       := Low(FTimes);
 bFound  := false;
 while ( not bFound ) AND ( i <= High(FTimes) ) do
 begin
   if    ( Frac(aTime) >= FTimes[i].aTimeBegin )
     AND ( Frac(aTime) <= FTimes[i].aTimeEnd   ) then
   begin
     if ( NOT FTimes[i].aHandled ) then
     begin
       FTimes[i].aHandled  := True;
       ResetHandled( FTimes, i );
       ShowMessage( FTimes[i].aMsg );
     end;

     bFound := True;
   end else inc(i);
 end;

 if NOT bFound then
 begin
   if FShowDefMsg then ShowMessage( FDefaultMsg );
 end;
end;

end.


Bu unit'in nasıl kullanıldığına ilişkin örnek :
uses MessageTimeHelperU;

var
 TimeHelper : TTimeHelper;

procedure TForm1.SetTimeRecords;
var
 aTimeRec : TTimeRec;
begin
 TimeHelper := TTimeHelper.Create;
 TimeHelper.DefaultMessage     := 'message : out of time list';
 TimeHelper.ShowDefaultMessage := true;
// 1st Time Record
 With aTimeRec do begin
   aTimeBegin := EncodeTime( 09, 00, 00, 000 ); // Start-1
   aTimeEnd   := EncodeTime( 11, 00, 00, 000 ); // End  -1
   aMsg       := 'Good morning...';
   aHandled   := False;
 end;
 TimeHelper.AddTimeRec( aTimeRec );

// 2nd Time Record
 With aTimeRec do begin
   aTimeBegin := EncodeTime( 14, 00, 00, 000 ); // Start-2
   aTimeEnd   := EncodeTime( 18, 00, 00, 000 ); // End  -2
   aMsg       := 'Good afternoon...';
   aHandled   := False;
 end;
 TimeHelper.AddTimeRec( aTimeRec );

// 3rd Time Record
 With aTimeRec do begin
   aTimeBegin := EncodeTime( 18, 00, 00, 001 ); // Start-3
   aTimeEnd   := EncodeTime( 20, 00, 00, 000 ); // End  -3
   aMsg       := 'Good evening...';
   aHandled   := False;
 end;
 TimeHelper.AddTimeRec( aTimeRec );

// 4th Time Record
 With aTimeRec do begin
   aTimeBegin := EncodeTime( 20, 00, 00, 001 ); // Start-4
   aTimeEnd   := EncodeTime( 23, 59, 59, 999 ); // End  -4
   aMsg       := 'Good Night...';
   aHandled   := False;
 end;
 TimeHelper.AddTimeRec( aTimeRec );

end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
 if Not Assigned( TimeHelper )
   then SetTimeRecords();

 TimeHelper.MessageTime( now );
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 ReportMemoryLeaksOnShutdown := true;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 if Assigned( TimeHelper ) then
   FreeAndNil( TimeHelper );
end;
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#10
(20-05-2020, Saat: 17:34)mrmarman Adlı Kullanıcıdan Alıntı: Bir kod çalışması hazırladım.

Çözümünüzü bulmuşsunuz sadece lazım olan başkaları için burada aranıp bulunabilir olsun diye konsept olarak paylaşıyorum.

* Kullanım örneğinde göreceğiniz gibi, başlangıç bitiş aralığı olan sınırsız sayıda kayıt girebilirsiniz. Bunları bir INI dosyası, web ortamı vb. kayıt altında tutabilir, tekrar dinamik olarak girişini sağlayabilirsiniz. Idea

* RECORD tipindeki TTimeRec kısımını dilediğiniz gibi yapılandırarak, ilgili saat aralığında kullanmak istediğiniz veri başlık(lar)ını düzenleyebilirsiniz. Örneğin ekran parlaklığı, ses seviyesi, vs.vs.

* Sistem bir timer içerisinde sürekli çalışacağı değerlendirilerek bir mesaj ekrana yansıtıldığında aynı ilgili saat diliminde yeniden aynı mesajın çıkmasının önüne geçmek / engellemek üzerine kurulu. aHandled boolean değişkeni ilgili saat dilimindeki bir mesaj ekrana yansıtılınca TRUE oluyorken, daha önce TRUE olmuş diğer saat dilimleri de ResetHandled proc ile varsayılana, FALSE ile yeniden mesaj vermeye hazır hale getiriliyor.

* Mekanizma kurulduktan sonra dilediğinizi yapabilirsiniz. En aşağıdaki kullanım örneğinde herhangi bir TIMER koymadım, yerine test için bir button koydum. Ancak kullanırken tabiatıyla koyacaksınız ve buttona basınca olan kısmı TIMERonTIMER içerisine yerleştireceksiniz. Interval ne ise ona göre saniyede, dakikada, saatte dilediğiniz periyotta art arda çalıştırmaya uygundur. Yineleyeyim, mesaj ilgili saat aralığında sadece bir defa tetiklenecektir.

Helper Unit kısmı

unit MessageTimeHelperU;

interface

Uses Dialogs;

Type
 TTimeRec = record
   aTimeBegin,
   aTimeEnd  : TTime;
   aMsg      : String;
   aHandled  : boolean;
 end;
 TTimes = array of TTimeRec;

 TTimeHelper = class( TObject )
 protected
 private
   FDefaultMsg : String;
   FTimeRec    : TTimeRec;
   FTimes      : TTimes;
   FShowDefMsg : boolean;
   procedure   ResetHandled(aTimes: TTimes; aException: Integer);
 public
   constructor Create;
   destructor  Destroy; override;
   property    ShowDefaultMessage : boolean read FShowDefMsg  write FShowDefMsg;
   property    DefaultMessage     : String  read FDefaultMsg  write FDefaultMsg;
   procedure   MessageTime( aTime : TTime );
   procedure   AddTimeRec(  aTimeRec : TTimeRec );
end;

implementation

{ TTimeHelper }

procedure TTimeHelper.AddTimeRec(aTimeRec: TTimeRec);
begin
 if High( FTimes ) = -1 then
   SetLength( FTimes, 1 )
 else
   SetLength( FTimes, High(FTimes) + 2 );

 FTimes[High(FTimes)].aTimeBegin := aTimeRec.aTimeBegin;
 FTimes[High(FTimes)].aTimeEnd   := aTimeRec.aTimeEnd;
 FTimes[High(FTimes)].aMsg       := aTimeRec.aMsg;
 FTimes[High(FTimes)].aHandled   := aTimeRec.aHandled;
end;

constructor TTimeHelper.Create;
begin
 inherited;

 FDefaultMsg := 'Default Message';
 FShowDefMsg := False;
end;

destructor TTimeHelper.Destroy;
begin

 inherited;
end;

procedure TTimeHelper.ResetHandled( aTimes: TTimes; aException: Integer );
var
 i : Integer;
begin
 for i := Low(aTimes) to High(aTimes) do
   if i <> aException then
     aTimes[i].aHandled := False;
end;

procedure TTimeHelper.MessageTime(aTime: TTime);
var
 i       : Integer;
 bFound  : boolean;
begin
 i       := Low(FTimes);
 bFound  := false;
 while ( not bFound ) AND ( i <= High(FTimes) ) do
 begin
   if    ( Frac(aTime) >= FTimes[i].aTimeBegin )
     AND ( Frac(aTime) <= FTimes[i].aTimeEnd   ) then
   begin
     if ( NOT FTimes[i].aHandled ) then
     begin
       FTimes[i].aHandled  := True;
       ResetHandled( FTimes, i );
       ShowMessage( FTimes[i].aMsg );
     end;

     bFound := True;
   end else inc(i);
 end;

 if NOT bFound then
 begin
   if FShowDefMsg then ShowMessage( FDefaultMsg );
 end;
end;

end.


Bu unit'in nasıl kullanıldığına ilişkin örnek :
uses MessageTimeHelperU;

var
 TimeHelper : TTimeHelper;

procedure TForm1.SetTimeRecords;
var
 aTimeRec : TTimeRec;
begin
 TimeHelper := TTimeHelper.Create;
 TimeHelper.DefaultMessage     := 'message : out of time list';
 TimeHelper.ShowDefaultMessage := true;
// 1st Time Record
 With aTimeRec do begin
   aTimeBegin := EncodeTime( 09, 00, 00, 000 ); // Start-1
   aTimeEnd   := EncodeTime( 11, 00, 00, 000 ); // End  -1
   aMsg       := 'Good morning...';
   aHandled   := False;
 end;
 TimeHelper.AddTimeRec( aTimeRec );

// 2nd Time Record
 With aTimeRec do begin
   aTimeBegin := EncodeTime( 14, 00, 00, 000 ); // Start-2
   aTimeEnd   := EncodeTime( 18, 00, 00, 000 ); // End  -2
   aMsg       := 'Good afternoon...';
   aHandled   := False;
 end;
 TimeHelper.AddTimeRec( aTimeRec );

// 3rd Time Record
 With aTimeRec do begin
   aTimeBegin := EncodeTime( 18, 00, 00, 001 ); // Start-3
   aTimeEnd   := EncodeTime( 20, 00, 00, 000 ); // End  -3
   aMsg       := 'Good evening...';
   aHandled   := False;
 end;
 TimeHelper.AddTimeRec( aTimeRec );

// 4th Time Record
 With aTimeRec do begin
   aTimeBegin := EncodeTime( 20, 00, 00, 001 ); // Start-4
   aTimeEnd   := EncodeTime( 23, 59, 59, 999 ); // End  -4
   aMsg       := 'Good Night...';
   aHandled   := False;
 end;
 TimeHelper.AddTimeRec( aTimeRec );

end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
 if Not Assigned( TimeHelper )
   then SetTimeRecords();

 TimeHelper.MessageTime( now );
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 ReportMemoryLeaksOnShutdown := true;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 if Assigned( TimeHelper ) then
   FreeAndNil( TimeHelper );
end;

Hocam elinize sağlık, bana biraz ağır gelsede diğer arkadaşlar için yararlı bir örnek olmuş. Tekrar elinize meğinize sağlık.
Benim bu uygulamada yapmak istediğim şey aslında bu kullanıcı hangi uygulamayı kullanırsa kullansın(benim yazdığım uygulama harici uygulamalar) mesajıma OK demeden bilgisayarı kullanmasını engellemek.

MessageBox(Application.Handle,'Mesaj',PChar(Application.Title),MB_OK or MB_ICONINFORMATION or MB_SYSTEMMODAL);

MessageBox da gösterebiliyorum ama ekranın herhangi bir yerine tıkladığında benim mesajım arka tarafa geçip kullanıcı ekran kullanımına devam edebiliyor.
Bu anlattığım işlemi yapabilmemin bir yolu var mı?
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Windows API kodu çözümlemesi parlakcuma 1 638 23-09-2023, Saat: 05:29
Son Yorum: parlakcuma
  cozuldu-SQL KODU CALISMIYOR sadikacar60 5 751 19-03-2023, Saat: 11:57
Son Yorum: mcuyan
  Javascript kodu barissagir 4 832 10-01-2023, Saat: 13:56
Son Yorum: barissagir
  Grup Kodu Eşitlemek OZCANK 3 1.034 11-10-2022, Saat: 11:50
Son Yorum: OZCANK
  delphi 7 de 2 monitörde prg çalıştırmak. sadikacar60 5 1.822 03-06-2021, Saat: 12:36
Son Yorum: sadikacar60



Konuyu Okuyanlar: 1 Ziyaretçi