سلام
واسه اینکار روش های زیادی هست مثلا استفاده کردن از تابع FindWindow یا CreateMutex در مورد هر کدوم که سرچ کنی اطلاعات زیادی بدست میاری من یه مثال از تابع CreateMutex واست میزارم.
از منوی project زیر منوی view source رو انتخاب کن بعد متن داخلشو مثل کد پایین تغییر بده
program RunOneTime;
uses
windows, //<<<<<<<<<<<<<
Forms,
RunOneTimeUnit in 'RunOneTimeUnit.pas' {Form1};
{$R *.res}
var
MutexHandle: THandle; //<<<<<<<<<<
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
//-------------------------------------------------------------------
MutexHandle:=CreateMutex(nil,TRUE,'NameofMyProgram-version1.2.3');
If MutexHandle<>0 then
If GetLastError=ERROR_ALREADY_EXISTS then
begin
Application.MessageBox('This program is runing','Error!',mb_ok);
Application.Terminate;
end;
//---------------------------------------------------------------------
Application.Run;
end.
به خط های که جلوشون کامنت گذاشتم توجه کن.