Closing Previous Instances of a program

Closing Previous Instances of a program

برای اين که بخواهيد برنامه تان فقط يک بار بتواند اجرا شود، بايد چک کنيد که آيا از قبل در حال اجراست يا خير؟ و در صورتی که چنين بود نمونه ی قبلی برنامه را ببنديد.

 

کد زير اين کار را برای شما انجام می دهد.

procedure CloseIfRunning;

var n1:Integer;

  p1:array[0..1024]of char;

  s1:string;

begin

with Form1 do

begin

  n1:=GetWindow(handle,GW_HWNDFIRST);

  while(1=1)do

  begin

    Application.ProcessMessages;

    n1:=GetNextWindow(n1,GW_HWNDNEXT);

    if n1=0 then

      break;

    GetClassName(n1,p1,sizeof(p1));

    s1:=StrPas(p1);

    if s1=Form1.ClassName then

    begin

      GetWindowText(n1,p1,sizeof(p1));

      s1:=StrPas(p1);

      if (s1=Form1.Caption) and (n1<>handle) then

        PostMessage(n1,WM_CLOSE,0,0);

    end;

  end;

end;

end;

  
نویسنده : محمد ; ساعت ٥:٤٩ ‎ب.ظ روز یکشنبه ۱۱ آبان ،۱۳۸٢