View Full Version : کدی برای نشون دادن برنامه هایی که قبلاً اجرا شده بود !
  
shahin_man
پنج شنبه 11 اسفند 1384, 19:33 عصر
من کد برای دلفی می خوام:
کدی که نشون بده که برنامه من قبلا اجرا شده یا نه و اگه اجرا شده بود و در حال اجرا بود برنامه من دیگه اجرا نشه.
joker
پنج شنبه 11 اسفند 1384, 19:53 عصر
من کد برای دلفی می خوام:
کدی که نشون بده که برنامه من قبلا اجرا شده یا نه و اگه اجرا شده بود و در حال اجرا بود برنامه من دیگه اجرا نشه. 
program Project1;
uses
  windows,
  Forms,
  Unit1 in 'Unit1.pas' {Form1}
;
{$R *.RES}
    var
    HMutex : THandle ;
    begin
    HMutex := CREATEmutex(nil,false,'One Copy');
    if WaitForSingleObject(hmutex,0) <> wait_timeout then
    BEGIN
begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
  END;
  end;
end.
Mahmood_M
جمعه 12 اسفند 1384, 01:54 صبح
من کد برای دلفی می خوام:
کدی که نشون بده که برنامه من قبلا اجرا شده یا نه و اگه اجرا شده بود و در حال اجرا بود برنامه من دیگه اجرا نشه.
با اجازه از دوست عزیزمون Joker، ولی فکر کنم این یکی راحت تر باشه.
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 یا OnShow مربوط به فرم اصلی چک کنی که برنامه داره اجرا می شه یا نه، اگه داره اجرا می شه یک پیغام نشون بدی و فرم اصلی برنامه رو ببندی، مثلا :
if IsRunningApp = True then
   MessageBox(Handle, 'Program is Running', '', MB_OK+MB_ICONEXCLAMATION);
   Form1.Close;
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.