ورود

View Full Version : کدی برای نشون دادن برنامه هایی که قبلاً اجرا شده بود !



shahin_man
پنج شنبه 11 اسفند 1384, 18:33 عصر
من کد برای دلفی می خوام:
کدی که نشون بده که برنامه من قبلا اجرا شده یا نه و اگه اجرا شده بود و در حال اجرا بود برنامه من دیگه اجرا نشه.

joker
پنج شنبه 11 اسفند 1384, 18: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, 00: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;