- Yerini tespit edebilmen için IF bloğunun tamamını yazdım.
Kod: Tümünü seç
if Calisiyor or (hMyMutex <> 0) then // 2.kontrol.
begin
if IsIconic(hMyMutex) then
ShowWindow(hMyMutex, SW_RESTORE);
SetForegroundWindow(hMyMutex);
ShowMessage('Program zaten çalışmaktadır.');
Halt(0);
end;
Ref : http://delphi.about.com/library/code/ncaa100703a.htm
Bu ZIP dosyasını indirin, içindeki CheckPrevious.pas dosyasını proje klasörünüze kopyalayıp USES olarak (SHIFT+F11) projenize dahil edin.
- Bu UNIT'in özelliği; çalışmakta olan projenizi eğer varsa bulup açığa çıkarmak.
- Ek olarak beğendiğim diğer özelliği, dilerseniz 1'den büyük bir sayı belirliyorsunuz ve aynı anda programınız o sayıda adette çalışıyor.

- Ek başka bir özellik olarak da UNIT içerisinde MappingName'e vereceğiniz özel bir tarih, isim, saat vs. ile belli bir süre için programınızın tekrar çalışmasına mani olacak kontrol de ekleyebileceğiniz...

- Örnek tüm proje şağıdaki gibi sadeleşiyor...
Kod: Tümünü seç
program Project1;
uses
Forms,
CheckPrevious in 'CheckPrevious.pas',
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
// burada verilmiş olan rakam 1 (bir).
// Aynı anda sadece bir programınız çalışır. Bu rakam daha büyük
// verilirse, aynı anda o sayıda program çalışabiliyor.
if not CheckPrevious.RestoreIfRunning(Application.Handle, 1) then
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm1, Form1);
Application.Run;
end;
end.