ورود

View Full Version : می خواهم اگر دو بار روی برنامه (exe)کلیک شد فقط یکبار اجرا گردد



ali reza omid ali
دوشنبه 03 مرداد 1384, 09:10 صبح
می خواهم اگر دو بار روی برنامه (exe)کلیک شد فقط یکبار اجرا گردد

Touska
دوشنبه 03 مرداد 1384, 10:07 صبح
می تونی از ابزار Lmd استفاده کنید.

که یک علامت 1 روش هست.

ali reza omid ali
دوشنبه 03 مرداد 1384, 15:03 عصر
دوست من اگر می شود یه کمی بیشتر توضیح بدهید

m-khorsandi
دوشنبه 03 مرداد 1384, 15:53 عصر
درود

حتما به این آدرس سر بزنید: http://delphi.about.com/library/weekly/aa110203a.htm

sasan_vm
دوشنبه 03 مرداد 1384, 17:50 عصر
[code/]

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
// Attempt to create a mutex. If the mutex already existed,
// GetLastError will return ERROR_ALREADY_EXISTS
HANDLE hInstanceMutex = ::CreateMutex(NULL, TRUE, "MobilePrj-C.C.C");
if (GetLastError() == ERROR_ALREADY_EXISTS)
{
if(hInstanceMutex)
CloseHandle(hInstanceMutex);
ShowMessage("Mobile is runing !");
return 0;
}

try
{
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}

ReleaseMutex(hInstanceMutex);
CloseHandle(hInstanceMutex);
return 0;
}

[code/]

Delphi KDE
دوشنبه 03 مرداد 1384, 20:37 عصر
[code/]

program Project1;

uses
Forms,
windows,
dialogs,
Unit1 in 'Unit1.pas' {Form1};

{$R *.res}
var hMutex: THandle;

begin
hMutex:= createMutex(nil, true, 'broker');
if getLastError = ERROR_ALREADY_EXISTS then
begin
showmessage(' already running');
HALT;
end;
Application.Initialize;
Application.Title := 'BROKER';
Application.CreateForm(TForm1, Form1);
Application.Run;
if hMutex <> 0 then closeHandle(hMutex);
end.

[code/]

Hamid_PaK
سه شنبه 04 مرداد 1384, 05:55 صبح
دوست عزیز این رو هم امتحان کنید ...
کمکتون میکنه که اگر برنامه اجراست به حالت نمایش باز گرده (Restore) .
بعد از اضافه کردن این Unit در Project Source که در منوی Project\ViewSource می تونید پیداش کنید باید به این صورت ازش استفاده کنید :


if RestoreIfRunning(Application.Handle) then Exit;
Application.Initialize;
Application.CreateForm(Tmain, main);
Application.Run;

موفق باشید.