ورود

View Full Version : سوال: پیغام هنگام اجرا شدن دوباره برنامه



hasandrw
شنبه 18 تیر 1390, 00:16 صبح
با سلام
اگه برنامه کاربردی که در دلفی نوشته شده در حال اجرا باشد و اگر برای بار دوم بخوام برنامه رو اجرا کنم می خوام پیام بده که مثلا"برنامه در حال اجرا است و اجرای مجدد آن امکان پذیر نیست" با چه تابعی می تونم این کار رو انجام بدم و این تابع رو باید کجای برنامه بنویسم.
باتشکر
یاحق

nsco_nsco
شنبه 18 تیر 1390, 01:20 صبح
سلام فکر نکنم تابعی باشه بهتره یکی فایل تی اکس تی درست کنی و مقداری بهش بدی و در اول برنامت تعریف کنی اگر مثلا یک بود ( اولین برنامه که اجرا میشه) پیغام بده یه راه بهتر هم ارتباط با رجیستری هست و همین فرایند رو بررسی کنه موفق باشی:قلب:

یوسف زالی
شنبه 18 تیر 1390, 01:20 صبح
سلام.
ساده ترین راه:


var
Mutex: THandle;
begin
Mutex := CreateMutex(nil, False, 'OneCopyMutex');
if WaitForSingleObject(Mutex, 0) = wait_TimeOut then
begin
ShowMessage('Application is open now.');
exit;
end;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.



این کد رو در Application خودتون قرار بدید.

البته باید Windows و Dialogs رو هم Use کنید.

یوسف زالی
شنبه 18 تیر 1390, 02:08 صبح
بعد از کمی جستجو به این نتیجه رسیدم که کمی کد بالایی باید بهینه بشه:


begin
CreateMutex(nil, True, 'OneCopyMutex');
if GetLastError = ERROR_ALREADY_EXISTS then
begin
ShowMessage('Exist');
exit;
end;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.

Felony
شنبه 18 تیر 1390, 06:06 صبح
var
Mutex : THandle;
begin
Mutex := CreateMutex(nil, True, 'MyAppName');
if (Mutex <> 0) and (GetLastError = 0) then
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
CloseHandle(Mutex);
end;
end.

hasandrw
شنبه 18 تیر 1390, 11:19 صبح
ممنون
ولی این کدها رو باید کجای پروه ام بنویسم

mohsen24000
شنبه 18 تیر 1390, 11:49 صبح
در سورس پروژه نرم افزارتون...

hasandrw
شنبه 18 تیر 1390, 12:33 عصر
من این کدها رو در پروژه ام نوشتم اما روCreateMutex و CloseHandle خطا میگیره نمیدونم چکار کنم
اگه میشه راهنمایی ام کنین.

یوسف زالی
شنبه 18 تیر 1390, 12:51 عصر
گفتم که باید Windows رو Use کنید.

hasandrw
یک شنبه 19 تیر 1390, 00:34 صبح
شرمنده.
ولی من بلند نیستم ویندوز رو use کنم.
اگه راهنماییم کنین ممنون میشم.

loo30fer
یک شنبه 19 تیر 1390, 00:55 صبح
شرمنده.
ولی من بلند نیستم ویندوز رو use کنم.
اگه راهنماییم کنین ممنون میشم. کاری نداره دوست من مانند نمونه که قرار دادم البته این رو باید بعد از خطی که نوشته interface اضافه کنید.
uses
Windows, Dialogs;

mohsen24000
یک شنبه 19 تیر 1390, 00:58 صبح
program prog_name;

uses
Forms,
windows,
SysUtils,
Dialogs,...;