Delphi bilmediğini var sayarak, basit şekilde anlatmaya çalışayım. Üst menüden, sırasıyla
Project +
View Source'ye gir. Bu alanda projenin .dpr dosyasında yer alan ve program çalıştırıldığında, ilk işletilecek olan kodları göreceksin. Boş bir proje açmışsan, aşağı yukarı şöyle bir kod kümesi yer alacak;
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
Burada uses kısmında, projenin kullanacağı kütüphaneler yer almaktadır. Öncelikle, projemizin başlık bilgilerini kontrol etmemizi sağlayacak olan
Windows kütüphanesini, Forms'un altına ekle.
-----------------------------------
uses
Forms,
Windows,
Unit1 in 'Unit1.pas' {Form1};
-----------------------------------
Daha sonra, projenin görev yöneticisinde de tanımlanmasını sağlayacak olan, başlık bilgilerini belirtmen gerekiyor. Aksi taktirde, programı, aşağıda belirteceğim metotla tespit etmem mümkün olmayacak. Bunun içinde, programın yüklenmeye başladığı kısma (Application.Initialize;), başlık bilgilerini
Application.Title şeklinde belirtmen gerekiyor. Örnek olarak programın başlığını
ultimastrike yapalim.
-----------------------------------
Application.Initialize;
Application.Title := 'ultimastrike';
Application.MainFormOnTaskbar := True;
-----------------------------------
Son olarakta, programın başlığını bellek üzerinde kontrol edip, açık olup olmadığını tespit edeceğimiz ve açıksa çalışmasını engelleyeceğimiz (Halt(0);) kodu, program bilgileri yüklenmeye başlamadan, çalıştırıyoruz. Bunun içinde, aşağıda ki kodu eklemen gerekiyor.
-----------------------------------
{$R *.res}
begin
CreateMutex(nil,FALSE,'ultimastrike');
if GetLastError = ERROR_ALREADY_EXISTS then
begin
Halt(0);
end;
Application.Initialize;
-----------------------------------
Bu koduda eklediğimizde, kodun tamamı, aşağı-yukarı (kendi uygulamandaki formlar ve düzenlemelere göre değişebilir) bu şekilde görünecektir.
-----------------------------------
program Project1;
uses
Forms,
Windows,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
CreateMutex(nil,FALSE,'ultimastrike');
if GetLastError = ERROR_ALREADY_EXISTS then
begin
Halt(0);
end;
Application.Initialize;
Application.Title := 'ultimastrike';
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
-----------------------------------
Artık, program birden fazla açılmayacak. Eğer program tekrar açılmaya çalışınca, uyarı görüntülemek istersen de, uses kısmına,
Dialogs kütüphanesini ekledikten sonra,
ShowMessage(); fonksiyonunu kullanabilirsin.
-----------------------------------
if GetLastError = ERROR_ALREADY_EXISTS then
begin
ShowMessage('Program zaten çalışıyor.');
Halt(0);
end;
-----------------------------------
Kolay gelsin...