TRFoRuMCuYuZ.CoM ® Bilgi & Paylaşım Kaliteli Adresi

Tam Versiyon: Delphi - Program bir kes çalışsın (Hatta açıksa hiç açılmasın bile)
Şu anda tam olmayan bir versiyonun içeriğine bakıyorsunuz. Tam versiyona bakınız.
Kod:
Arkadaşlar merhabalar bilmeyen arkadaşlar için yazayım dedim, Kodbankta Programın yalnızca bir kez çalışması
ile ilgili,

CreateMutex(nil,FALSE,'PROGRAMADI');
if GetLastError = ERROR ALREADY EXISTS then
  begin
   ShowMessage('Program şu an çalışmakta.');
   Halt(0);
  end;


şeklinde kodlar var ve çok güzelde çalışıyor ancak bazı arkadaşlarımız bunun projenin kaynak kodlarına
eklenmesini söylemişler, bir arkadaşımızda kaynak kod dan çalışmayacağını bu kodun OnCreate yordamına
eklenmesi gerektiğini söylemiş. Şimdi önemli olan Evet bu kod doğru ve çok güzel çalışıyor ancak bir eksik
var o da bu kodlar kaynak koda eklenip çalıştırılabilirler sadece kaynak kodunuzdaki uses alanına
"CreateMutex" fonksiyonunu barındıran "Windows" ve "Showmessage" fonksiyonunu eklemeniz
gerekiyor. Bu şekilde açılış engellemenin en güzel tarafı eğer program açıksa daha form hafızaya alınmadan
program kapatılıyor. Eğerki bu kodu onCreate yordamına eklerseniz, program çalışır, form(lar) yüklenir ve
eğer aynı isimli çalışan program varsa program kapatılır. Umarım bilmeyen arkadaşlara yazdımcı olur...

Programın Kaynak Kodunun Son Hali:


program ABC;

uses
  Forms,Windows,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
CreateMutex(nil,FALSE,'ABC v1.0'); if GetLastError = ERROR_ALREADY_EXISTS then Halt(0); //isterseniz uyarı felan da
  Application.Initialize;                                                               // gösterebilirsiniz..
  Application.MainFormOnTaskbar := True;
  Application.Title := 'ABC v1.0';
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
Referans URL