PDA

View Full Version : برنامه تست اینکه برنامه در حال اجرا می‌باشد.



davoodmz
شنبه 02 اردیبهشت 1385, 09:28 صبح
با سلام
من کد این برنامه را در اینجا قرار می‌دهم لطفاً کمک کنید و اصلاحش کنید
من می خواهم بعد از اینکه تشخیص داد که در حال اجرا است دیگر اجرا نشود و فرم اصلی باز نشود.یعنی بعد از پیغام در حال اجرا هیچ عملی انجام نشود.


Function IsRunningApp:Boolean;
var
Hwnd:Thandle;
begin
hwnd:=CreateMutex(nil,False,'OneCopyMutex');
Result:=false;
If not(WaitForSingleObject(Hwnd,0)<>Wait_TimeOut) then
Result:=true;
end;
بعد در onActivate فرم اصلی


if IsRunningApp = True then
MessageBox(Handle, 'program is runnig', '', MB_OK+MB_ICONEXCLAMATION);

بعد از پیغام چه کدی قرار دهیم تا دیگر برنامه اجرا نشود.
باتشکر

m-khorsandi
شنبه 02 اردیبهشت 1385, 11:45 صبح
میتونی از Application.Terminate استفاده کنی.

اگه تو فایل اصلی پروژه ات شبیه به کد زیر رو هم بنویسی جواب میگیری:


if not IsRunningApp then
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end;

mzjahromi
شنبه 02 اردیبهشت 1385, 11:49 صبح
من کد این برنامه را در اینجا قرار می‌دهم لطفاً کمک کنید و اصلاحش کنید
من می خواهم بعد از اینکه تشخیص داد که در حال اجرا است دیگر اجرا نشود و فرم اصلی باز نشود.یعنی بعد از پیغام در حال اجرا هیچ عملی انجام نشود.
البته این روش برای حالتی که دو کاربر مختلف برنامه رو اجرا کنن جواب نمی ده

davoodmz
شنبه 02 اردیبهشت 1385, 12:15 عصر
باسلام
من تمام این راه ها را رفتم ولی جواب نگرفتم. در خود پروژه قرار دادم - در فرم اصلی قرار دادم ولی بعد از پیغام هیچ عملی انجام نمی‌شود.
باتشکر
داود

dkhatibi
شنبه 02 اردیبهشت 1385, 12:38 عصر
if IsRunningApp = True then begin
MessageBox(Handle, 'program is runnig', '', MB_OK+MB_ICONEXCLAMATION);
Application.terminate;
end;

davoodmz
شنبه 02 اردیبهشت 1385, 13:07 عصر
آقایان باتشکر
مشکل حل شد