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

أجعل نسخة واحدة من البرنامج تعمل في نفس الوقت!

مغلق
بدأه مازن أحمد في 19 نوفمبر 2001 · 2 رد · 632 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

ربما لاحظت ان هناك برامج تتعرف على أن نسخة منها مازالت تعمل already

running في النظام. مثلا كنت اركب AntiVirus في الجهاز، وخلال عملية التركيب حاولت أن أشغل البرنامج مرة آخرى، فما كان من البرنامج الا ان تعرف علىأن هناك نسخة منه مازالت تعمل، وقد اخبرني بذلك.

* لكن هل يمكنني تطبيقها في برامج دلفي؟ نعم وبكل تأكيد وإليك الطريقة:

1- ليكن الصنف class الخاص بالنموذج الرئيسي هو TMyTestClass معرف كلاتي:

type

{ضع هنا الكود المناسب لبرنامجك كالعادة}(TMyTestClass = class(TForm

2- في وحدة مصدر المشروع project source أجعل الوحدة تبدو مثل هذا:

;program Project1

uses

,Forms

,Windows, dialogs

;{Unit1 in 'Unit1.pas' {MyTestClass

{R *.RES$}

var

مقبض نافذة النسخة التي تعمل// ;WHandle: LongInt

;MyClassName: PChar

begin

احتفظ بأسم الصنف الخاص بالنافذة// ;'MyClassName := 'TMyTestClass

احصل على مقبض النافذة// ;(WHandle := FindWindow(MyClassName,NIL

النسخة الأولى: اكمل التحميل// if Whandle = 0 then begin

;Application.Initialize

;(Application.CreateForm(TMyTestClass, MyTestClass

;Application.Run

end

مازالت هناك نسخة تعمل في النظام: لا تكمل التحميل// else

begin

;(ShowMessage('The Program is already in memory

أغلق البرنامج// ;halt

;end

.end

ربما يوما ما سنحتاجها... مع تحياتي...

:rolleyes: عذرا سأحسن مظهر الكود في أسرع وقت!

#2

السلام عليكم

الطريقة جيدة وهناك عدة طرق أخرى لا تعتمد على classname تجدها

http://www.swissdelphicenter.ch/en/showcode.php?id=42

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#3

بسم الله الرحمن الرحيم

في البداية اشكر مازن احمد على هالكود واشكر الأخ tmaaa على الرد الجميل

على العموم يوجد طريقة اسهل من الي ذكرها الأخ مازن وهي هذا الكود

initialization

mutex := CreateMutEx(nil, true, 'MyMutEx');

if GetLastError = ERROR_ALREADY_EXISTS then begin

MessageDlg('لا يمكنك تشغيل البرنامج أكثر من مرة في آن واحد',mtinformation,[mbok],0);

halt;

end;

finalization

if mutex <> 0 then

CloseHandle(mutex);

وتقبلوا اطيب تحياتي اخوكم SUM

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…