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

مشاهدة النسخة كاملة : تنصيب دفعة من الخطوط مرة واحدة


القنـاص المصرى
11-09-2013, 05:11 AM
السلام عليكم ورحمة الله وبركاته
بسم الله الرحمن الرحيم
كيفكم ياشباب ان شاء الله تكونوا بالف صحة
عندى استفسار بسيط
هل يمكن تنصيب دفعة من الخطوط مرة واحدة
لنقل ان هذا الملف يحتوى 400 خط
Docs\\Fonts
وانا اريد تنصيبهم دفعة واحدة فانا لا اريد تكرار امر System.RegisterFont ل 400 مرة
ففكرت انى اضيف هذ الكود وهو فى الاصل كود الاخ هيثم فى نسخ الملفات ففكرت بتعديل امر النسخ لامر تسجيل الخط

fonts = File.Find("AutoPlay\\Docs\\Fonts\English", "*.*", true, true, nil, nil);
for x,y in pairs (fonts) do

System.RegisterFont(Shell.GetFolder(SHF_FONTS).."\\"..y.."", y, true);


Label.SetText("current_num", x);

Progress.SetCurrentPos("Progress1", x * 100 / count);

end

المشكلة عند تطبيق الامر يقوم باعطائى خطأ
ونصه

error: bad argument #1 to 'Pairs' (table expected, got nil)
stack traceback:
1: [Fonts Pack -> Button2 -> On Click] Line: 2 in Main chunk

عبود عبود
11-09-2013, 11:42 AM
أضف تصنيف ما يتم البحث عنة بمعنى إمتداد الشيئ المبحوث عنة لآنك تتعامل مع ملفات files

فلا يصح أن تبحث عن كل ما هو موجود فى فولدر English بدون ما تذكر إمتدادة .

و أضف شرط لتنفيذ التكرار فى حالة العثور على الملفات المطلوبة .

فكر قليلا كيف يتم ذلك أو ضع ملف مفتوح للتعديل علية

Haitham.2012
11-09-2013, 12:29 PM
بعد السطر الخاص بالنسخ .. ضع هذا الكود ( في نفس دالة التكرار الخاصه بعملية النسخ )


split = String.SplitPath(y);

System.RegisterFont(Shell.GetFolder(SHF_FONTS), split.Filename..split.Extension, true);

القنـاص المصرى
11-09-2013, 02:14 PM
أضف تصنيف ما يتم البحث عنة بمعنى إمتداد الشيئ المبحوث عنة لآنك تتعامل مع ملفات files

فلا يصح أن تبحث عن كل ما هو موجود فى فولدر English بدون ما تذكر إمتدادة .

و أضف شرط لتنفيذ التكرار فى حالة العثور على الملفات المطلوبة .

فكر قليلا كيف يتم ذلك أو ضع ملف مفتوح للتعديل علية

صحيح لابد اغير نمط البحث ليبحث عن ttf فقط

القنـاص المصرى
11-09-2013, 02:44 PM
بعد السطر الخاص بالنسخ .. ضع هذا الكود ( في نفس دالة التكرار الخاصه بعملية النسخ )


split = String.SplitPath(y);

System.RegisterFont(Shell.GetFolder(SHF_FONTS), split.Filename..split.Extension, true);



تم يا اخ هيثم التعديل حسب ماقلتلى وما اشتغلت للاسف
والملف المفتوح بالمرفقات


وياريت توضحلى انا عاوز افهم حضرتك عملت ايه لانه مش عاوز اطبق وخلاص
دلوقتى احنا عندنا جدول فيه اسماء حضرتك فصلته باستخدام الامر spilt
طيب ليه فصلنا ليه منعملوش زى محضرتك استدعيته مرة واحدة فى مثال نسخ الملفات ؟

القنـاص المصرى
11-09-2013, 07:12 PM
تم حل المشكلة جزاكم الله خيرا

Haitham.2012
11-09-2013, 08:03 PM
ال split علشان نتطلع اسم الملف وامتداده ايا كان ... وكمان لأني خليت امر تسجيل الخط يكون من المكان الاصلي لملف الخط وهو مجلد ال Fonts و ليس مجلد اسطوانتك

بس ياريت تقول ازاي حليت المشكله علشان غيرك يستفيد

بالتوفيق

القنـاص المصرى
11-09-2013, 08:32 PM
جزاك الله كل خير الخطأ كان بسب انى عند اضافة المسار فى اول كود
لم ادرج // بل اضفت / واحدة فأدت الى تعطيل الكود
-------------------------------------------------------------
هناك مشكلة فليس هناك اخطأ الا عند تنصيب الخطوط فعند التنصيب يخبرنى بأنها انتهت ولكن عندما اتحقق من مجلد الخطوط لا اجد انه تم تنصيبهم
الكود المستخدم فى الزر
fonts = File.Find("AutoPlay\\Docs\\Fonts\\English", "*.ttf", false, false, nil, nil);
for i,y in pairs (fonts) do
split = String.SplitPath(y);
System.RegisterFont(Shell.GetFolder(SHF_FONTS), split.Filename..split.Extension, true);
Label.SetText("current_num", i);

end

عبود عبود
11-09-2013, 08:38 PM
كيف يا أخى ؟ هل تعتقد أن الكود سوف ينفذ شيئ لم يطلب منة أصلا ؟

كيف سيقوم بالنسخ و أمر النسخ لم يوضع ؟

القنـاص المصرى
11-09-2013, 10:09 PM
كيف يا أخى ؟ هل تعتقد أن الكود سوف ينفذ شيئ لم يطلب منة أصلا ؟

كيف سيقوم بالنسخ و أمر النسخ لم يوضع ؟

يا اخ عبود انا اريد تنصيب الخطوط على الجهاز دفعة واحدة فكيف سيتم هذا الامر

القنـاص المصرى
11-09-2013, 10:10 PM
من المفترض لكى تحدث عملية التنصيب ان يتم تنصيب الخط عبر هذا الامر
System.RegisterFont
ام انك تريد ان تنوه انه لن يمكن تنصيب الخطوط الا بعد نسخها الى النظام ؟

azizsoft
12-09-2013, 02:17 AM
من المفترض لكى تحدث عملية التنصيب ان يتم تنصيب الخط عبر هذا الامر
System.RegisterFont


السلام عليكم ورحمة الله وبركاته

يجب تحديد مسار مجلد خطوط الوندوز وتخزينه في متغير كما يلي :

FontsFolder = Shell.GetFolder(SHF_FONTS);


عملية تنصيب الخط تتم بالأمر التالي :


File.Copy("AutoPlay\\Docs\\اسم الخط.ttf", FontsFolder, false, false, false, true);


ملاحظة :

من المعلوم أن عملية تنصيب خطوط من التجميعة تختلف من نظام الى أخر فمثلا تنصيب خط بنظام اكس بي
أمر سهل لكن يختلف الأمر مع انظمة تشغيل فيستا فما فوق 7 و 8
أعتقد أنه اذا تم ادراج الاكواد السابقة بالطريقة الصحيحة لن ييتم نسخ الخطوط بما أن وندوز 7 يتطلب امتياز التشغيل
كمسؤول حتى ان قمت بتفغيل Require Administrator من الاعدادات المتقدمة للمشروع.

عموما أرفقت لك ملف مفتوح والكود مدرج بالزر لتنصيب خط اسمه abuhijlah bold للاستفادة وننتظر اخواننا
ان كانت هناك حلول اخرى .

وفقكم الله

القنـاص المصرى
12-09-2013, 02:26 AM
جزاك الله خيرا اخ عزيز
طيب واذا كنت ارغب بتنصيب عدة خطوط معا مثل 200 خط فليس من المعقول ان استخدم الكود 200 مرة
ياريت اذا كان بأمكانك التعديل على الكود لتنصيب اكثر من خط فى مسار معين اكون ممنون ليك وجزاك الله كل خير على مشاركتك الطيبة

القنـاص المصرى
12-09-2013, 07:43 AM
السلام عليكم ورحمة الله وبركاته

يجب تحديد مسار مجلد خطوط الوندوز وتخزينه في متغير كما يلي :

FontsFolder = Shell.GetFolder(SHF_FONTS);


عملية تنصيب الخط تتم بالأمر التالي :


File.Copy("AutoPlay\\Docs\\اسم الخط.ttf", FontsFolder, false, false, false, true);


ملاحظة :

من المعلوم أن عملية تنصيب خطوط من التجميعة تختلف من نظام الى أخر فمثلا تنصيب خط بنظام اكس بي
أمر سهل لكن يختلف الأمر مع انظمة تشغيل فيستا فما فوق 7 و 8
أعتقد أنه اذا تم ادراج الاكواد السابقة بالطريقة الصحيحة لن ييتم نسخ الخطوط بما أن وندوز 7 يتطلب امتياز التشغيل
كمسؤول حتى ان قمت بتفغيل Require Administrator من الاعدادات المتقدمة للمشروع.

عموما أرفقت لك ملف مفتوح والكود مدرج بالزر لتنصيب خط اسمه abuhijlah bold للاستفادة وننتظر اخواننا
ان كانت هناك حلول اخرى .

وفقكم الله


من المعلوم أن عملية تنصيب خطوط من التجميعة تختلف من نظام الى أخر فمثلا تنصيب خط بنظام اكس بي
أمر سهل لكن يختلف الأمر مع انظمة تشغيل فيستا فما فوق 7 و 8

يا استاذ عزيز كلامك صحيح اذا قمنا بتطبيقه على تنصيب مجموعة من الخطوط مرة واحدة بمعنى انى اضعله امر يسحب خطوط من مجلد
ويثبتها بالنظام تلقائيا
وكلام حضرتك خاطئ (مع احترامى لك) اذا اعتمدنا على نظام التثبيت الفردى اللى هو عبر الكود الاتى
font = "AutoPlay\\Docs\\FS_DIWANY.TTF"
System.RegisterFont(font, "FS Diwany", true);
Dialog.Message("Notice", "Done", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);

وهذه هى المشكلة لان الطريقة واحدة فى التثبيت ولكن النظام لايقبله

azizsoft
12-09-2013, 07:14 PM
يا استاذ عزيز كلامك صحيح اذا قمنا بتطبيقه على تنصيب مجموعة من الخطوط مرة واحدة بمعنى انى اضعله امر يسحب خطوط من مجلد
ويثبتها بالنظام تلقائيا
وكلام حضرتك خاطئ (مع احترامى لك) اذا اعتمدنا على نظام التثبيت الفردى اللى هو عبر الكود الاتى
font = "AutoPlay\\Docs\\FS_DIWANY.TTF"
System.RegisterFont(font, "FS Diwany", true);
Dialog.Message("Notice", "Done", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);

وهذه هى المشكلة لان الطريقة واحدة فى التثبيت ولكن النظام لايقبله


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

مرحبا

بداية يا طيب الكود المشار اليه اعلاه الذي ادرجته ينقصه أمر النسخ :abc_113:

ثانيا أنت لم تفهم ما أقصد ؟

الكود الذي تبحث عنه الخاص بنسخ جملة من الخطوط الى مجلد الفونت بنظام التشغيل هو الاتي :


Dialog.Message("تنبيه", "سيتم تثبيت الخطوط في جهازك تلقائيا . خلال لحظات", MB_OK, MB_ICONQUESTION, MB_DEFBUTTON2);

fontFolder = Shell.GetFolder(SHF_FONTS);

find_fonts = File.Find("AutoPlay\\Docs\\Font", "*.ttf", true, true, nil, nil);

if find_fonts then

for x,y in pairs (find_fonts) do

get_font_name = String.SplitPath(y);

File.Copy(y, fontFolder, true, true, false, true, nil);

System.RegisterFont(fontFolder.."\\"..get_font_name.Filename..get_font_name.Extension, get_font_name.Filename, true);

end

end

Dialog.Message("تنبيه", "تـــــم تـثـبـيـــت الـخــطــــوط", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON2);




ادرج هذا الكود بزر واضف جملة من الخطوط بمجلد Font بالمشروع وقم بالتجربة ثم تأكد من العملية
شخصيا قمت في السابق بتجربة هذا الأمر ولم تتم عملية النسخ الا بعد أن غيرت اعدادات اليوزر اكونت لنظام التشغيل 7
كما هو مبين بالصور وتم النسخ بعد ذلك .

http://www.camcadtech.com/tech-tips/surfcam/images/uac2.jpg

وهذا ما أقصده سابقا .

بالتوفيق

القنـاص المصرى
12-09-2013, 08:14 PM
اها فهمت قصدك يا استاذى الغالى وشكرا للمتابعة وجارى التجربة

عبود عبود
13-09-2013, 07:58 PM
azizsoft @

الملف المرفق تمام ولكن بالنسبة لــــ user.IsVistaAdminLimitedToken

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

عبود عبود
13-09-2013, 08:08 PM
القنـاص المصرى @


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

طبعا عند التصدير كملف مفتوح وحذف أى ملفات أو مجلدات من المستخدمة عن طريق التحكم عبر النافذة التالية :

http://imageshack.com/scaled/800x600/13/wamt.png

بوضع العلامة يتم حذف محتويات المجلد المحدد و العكس . :abc_065:

القنـاص المصرى
13-09-2013, 09:42 PM
تم الانتهاء من التجميعة اخ عبود ووضحت للمستخدم انه لازم يقفل اليوزر اكونت كونترول سنتر وريحت دماغى

عاصم المرابطي
19-09-2013, 07:26 PM
Thaaaaanks

بريزة
30-04-2014, 08:39 AM
شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .

عبدوعزيز
23-02-2016, 08:59 AM
مشكوووووووووور

محمد بن أحمد أبو حذيفة
10-03-2017, 09:52 AM
بسم الله الرحمن الرحيم
متابع

المـهاجر
05-04-2017, 02:14 AM
تاريخ الموضوع يرجع ل 2013
و حتى الان لم اشاهد اى طريقة عملية صحيحة لتنصيب الخطوط على ويندوز 7 فما اعلى
و اغلب الطرق المطروحة
اما طرق تعتمد على الضغط بالونرار sfx
او طرق تعتمد على دوال منتهية الصلاحية لأنها مخصصة للاكس بي و لا يصح استخدامها لسواه

هل معقول من 2013 حتى الأن لم يتم حسم الموضوع ؟

عبود عبود
05-04-2017, 02:14 PM
تاريخ الموضوع يرجع ل 2013
و حتى الان لم اشاهد اى طريقة عملية صحيحة لتنصيب الخطوط على ويندوز 7 فما اعلى
و اغلب الطرق المطروحة
اما طرق تعتمد على الضغط بالونرار sfx
او طرق تعتمد على دوال منتهية الصلاحية لأنها مخصصة للاكس بي و لا يصح استخدامها لسواه

هل معقول من 2013 حتى الأن لم يتم حسم الموضوع ؟

لماذا تقول أنها طرق تعتمد على دوال منتهية الصلاحية لأنها مخصصة للاكس بي و لا يصح استخدامها لسواه ؟

هل قمت بالتجربة ولم تصلح على الويندوز 7 فما فوق ؟

عبد العزيز البسكري
05-04-2017, 02:33 PM
السلام عليكم ورحمة الله وبركاته
شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .

المـهاجر
05-04-2017, 08:09 PM
هل قمت بالتجربة ولم تصلح على الويندوز 7 فما فوق ؟
طبعا جربتها و بالقطع لا تصلح

عبد العزيز البسكري
06-04-2017, 12:54 PM
السّلام عليكم و رحمة الله و بركاته
قد أكون غير فاهم للموضوع و أغرّد خارج السّرب
لكن ما تأكّدت منه هو تمكّني من تنصيب مجموعة الخطوط على وينداوز 8 بطريقة جد عادية بعد إتّباع ما بالمشاركة 15
بارك الله فيكم و لكم على ما تقدّمونه من علم نافع عسى الله أن يعوّضكم بمليون حسنة إن شاء الله
فائق إحتراماتي

الحنفي
12-02-2018, 04:35 PM
شكرا جزيلا

عبد الهادي بهاب
13-02-2018, 07:07 PM
السلام عليكم ورحمة الله وبركاته
شـكــ وبارك الله فيك ـــرا لك ... لك مني أجمل تحية .