ورود

View Full Version : اجرای نرم افزار برای یکبار



yalameh
دوشنبه 06 آبان 1387, 15:10 عصر
سلام
دوستان کسی می دونه چطور می شه اجازه داد نرم افزار فقط یکبار اجرا گردد و برای دفعات بعدی پیغام داده شود .

s.mostafa.rahmani
دوشنبه 06 آبان 1387, 15:25 عصر
if findwindow('TForm1', 'Form1')<>0 then
begin
showmessage('already running');
application.terminate;
end;

beginner63
دوشنبه 06 آبان 1387, 15:55 عصر
با سلام. البته روش صحيح استفاده از mutexهست. جستجو كنيد

yalameh
دوشنبه 06 آبان 1387, 15:56 عصر
دوست عزیز این کد که نوشتی کجای نرم افزار باید ازش استفاده کنیم . من توی OnCreate فرم می گذارم همیشه پیغام Already running را می ده و از برنامه بیرون می آد .

s.mostafa.rahmani
دوشنبه 06 آبان 1387, 16:13 عصر
توي فايل اصلي برنامه.
از منوي Project گزينه View Source رو انتخاب كنيد.

s.mostafa.rahmani
دوشنبه 06 آبان 1387, 16:15 عصر
اين هم راه استفاده از mutex كه به قول دوستمون راه صحيح‌تري است:

program MyApp;
uses
Windows,Forms,
MyApp1 in 'MyApp1.pas' {Form1};


var
Mutex : THandle;
{$R *.RES}

begin
Mutex := CreateMutex(nil, True, 'MyAppName');
if (Mutex <> 0) and (GetLastError = 0) then
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
if Mutex <> 0 then
CloseHandle(Mutex);
end;
end.