الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تشغيل نسخة واحدة مكن البرنامج فقط ..

مغلق
بدأه simo في 23 نوفمبر 2002 · 5 رد · 1,053 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

كيف يمكننا منع تشغيل البرنامج لأكثر من مرة واحدة.. على الكومبيوتر..

الذي أقصده .. انه يوجد بعض البرامج مثل

Microsoft outlook

ترفض العمل في حال وجود نسخة أخرى منها قيد التشغيل على الكومبيوتر..

فكيف أستطيع إضافة هذه الميزة لبرنامجي بحيث لا يتم تشغيل نسختين منه في نفس الوقت على الكومبيوتر..

و في الختام لكم مني كل التحية و السلام

#2

أخي العزيز

تستطيع استخدام الأداة التالية الموجودة في مجموعة أدوات

اسم الأداة abfOneInstance أرجو لك التوفيق

أخوك حازم

abfcomponent.zip

#3

شكرا لك أخي حازم ..

و لكني قد أكون متطلب زيادة عن اللزوم ..

لا يوجد طريقة من داخل الـ Delphi مباشرة . من دون تثبيت عناصر إضافية ..

في الختام لك مني كل التحية و السلام

(f)

#4

بالتأكيد يوجد ياأخ لكني لا أعرفها و ربما هي تكمن في مراقبة البرامج المشغلة و منع

تشغيل البرامج التي تحمل ذات الاسم أو مراقبة مجلد البرنامج و يفضل بالنسبة للبرامج التي تتعامل مع الملفات أن تمنع تشغيلها مرة اخرى بهذه الطرق اوغيرها وذلك تجنبا لحدوث أخطاء عندما يتم الكتابة إلى ملف واحد بدون تنسيق بين البرنامجين

هذا ما أعرفه و أرجوا أن يفيدك

أخوك حازم

#5

السلام عليكم

يوجد عدة طرق مثل البحث عن نافذة برنامجك بإستخدام FindWindow او بإستخدام mutual exclusion والمعروف بإسم Mutex

هناك مثال وضعته على هذا الرابط

http://www.dev4arabs.com/ar/delphi/resours...p?s=2&id=61&k=2

مع تحياتي

والسلام

لا تحزن:

إن كنت فقيرا فغيرك محبوس في دين، وإن كنت لا تملك وسيلة نقل فسواك مبتور القدمين، وان كنت تشكوا من آلام فغيرك يرقدون على الاسرة البيضاء و من سنوات، وان فقدت ولدا فغيرك فقد عددا من الأولاد و في حادث واحد.

لا تحزن:

فأنت تشرب الماء الزلال، و تستنشق الهواء الطلق، و تمشي على قدميك معافى، و تنام ليلك آمنا.

#6

يوجد طريقة باستخدام Mutex

وهذا مثال

program Project1;

uses

Forms,

Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

var

hMutex: THandle;

begin

HMutex := CreateMutex (nil, False, 'OneCopyMutex');

if WaitForSingleObject (hMutex, 0) <> wait_TimeOut then

begin

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Application.Run;

END

ELSE

ShowMessage('لا يمكن تشغيل أكثر من نسخة من البرنامج');

end.

هذا الموضوع مغلق.

مواضيع مشابهة