المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : منع المستخدم من تشغيل التجميعة مرتين


الجارف
19-07-2014, 04:09 PM
السلام عليكم ورحمة الله

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

هل من طريقة لمنع أو تنبيه مستخدم التجميعة

بأن التجميعة في وضع التشغيل ويرجى الانتظار



أتمنى أن يكون سؤالي واضح لكم ..

النصل القاطع
19-07-2014, 09:35 PM
السلام عليك اخى


أتمنى أن يكون سؤالي واضح لكم ..

فى الحقيقة ليس واضح !!!
بل شديد الوضوح أخى :abc_088:


من قوائم البرنامج إختار Project
إختار Actions

فى الحدث On startup ضع
run = Application.LoadValue("Run_Stat", "run");
if run == "" then
Application.SaveValue("Run_Stat", "run", "true");
else
Dialog.Message("Sharp_Plade", "ÇáÈÑäÇãÌ íÚãá ÈÇáÝÚá", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
closed=false
Application.Exit(0);
end

و فى الحدث On shutdown ضع
if closed~=false then
Application.SaveValue("Run_Stat", "run", "");
end

ترجم البرنامج لتنفيذى لترى النتيجة
لأن المعاينة العادية لن تنفع بسبب أن البرنامج لا يسمح بمعاينة نفس البرنامج مرتين

بالتوفيق

امل الماضي
20-07-2014, 07:13 AM
شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .

عبود عبود
20-07-2014, 12:01 PM
جميل جدا وحل مختصر وفعال جدا

شكرا أخى

النصل القاطع
20-07-2014, 06:06 PM
جميل جدا وحل مختصر وفعال جدا


نعم اخى
لكن للأسف

فبه خطأ قاتل جدا إكتشفته مؤخرا
ماذا يحدث لو لم يغلق البرنامج بالطريقة الطبيعية و تم إغلاقه بواسطة alt +ctrl + del ؟؟
تحدث كارثة

لن يفتح البرنامج للأبد و سيعطى دائما رسالة البرنامج يعمل بالفعل

جارى العمل على ايجاد حل آخر

عبود عبود
21-07-2014, 01:40 AM
جزاك الله خيرا
إذن سنعود للحل التقليدى
فى " On StartUp " سوف نضع الكود التالى :

--
run = 0
for j, file_path in pairs (System.EnumerateProcesses()) do
if String.SplitPath(file_path).Filename..String.Split Path(file_path).Extension == "autorun.exe" then
run = run + 1
end
end


if run == 1 then

Dialog.Message("note", "تم فتح البرنامج لانه لا يعمل من قبل", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);

else

Dialog.Message("note", "لا يمكن فتح البرنامج لأنه يعمل حاليا\r\n\r\nسيتم اغلاق البرنامج", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
Application.Exit(0);

end

الجارف
21-07-2014, 02:23 AM
نعم اخى
لكن للأسف

فبه خطأ قاتل جدا إكتشفته مؤخرا
ماذا يحدث لو لم يغلق البرنامج بالطريقة الطبيعية و تم إغلاقه بواسطة alt +ctrl + del ؟؟
تحدث كارثة

لن يفتح البرنامج للأبد و سيعطى دائما رسالة البرنامج يعمل بالفعل

جارى العمل على ايجاد حل آخر

نعم أخي .. جربت الأكواد

ومثل ما تفضلت به .. أعطاني البرنامج رسالة يعمل بالفعل

وهذه مشكلة قائمة ..

أشكرك على تعاونك ..

النصل القاطع
21-07-2014, 02:28 AM
أخى عبود
بعد التجربة
فكرتك رائعة جدا

شكرا اخى

الجارف
21-07-2014, 02:28 AM
إذن سنعود للحل التقليدى



جميل أخ عبود ..

طبقت الحل التقليدي ..

وقمت بالتعديل عليه في الرسالة التي تظهر

لأن الكود به رسالتين ..

الأولى عند تشغيل البرنامج لأول مرة ( البرنامج لا يعمل من قبل )

والثانية عند تشغيل البرنامج مرة ثانية ( البرنامج يعمل من قبل )

فقمت بحذف الكود الخاص بالرسالة الأولى

Dialog.Message("note", "تم فتح البرنامج لانه لا يعمل من قبل", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);

عبود عبود
21-07-2014, 02:31 AM
جزاك الله خيرا :abc_152:

مفيش تركيز هذه الأيام نظرا للإنشغال مؤقتا :abc_138: