• 0
المبرمج عبدالكريم

شرح ملف المصادر Resource Editor

سؤال

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

============

لتحميل الموضوع كملف pdf

http://al-dheya.net/download/books/resource.pdf

============

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

أقدم لكم شرح مهم في التعامل مع ملف المصادر

الفائدة باختصار : وضع ملف أو ملفات ضمن البرنامج (التطبيق exe) عن طريق المصادر Resource

ومن ثم استخراجها من البرنامج أو التعامل معها مباشرة من داخل البرنامج

ويمكن أي مستخدم من اخذ هذه الملفات باستخدام بعض البرامج مثل ResHackrs

أمثلة لاستخدام ملف المصادر :

1- استرجاع الملفات المحذوفة والتي تم تعديها أو إتلافها لضمان استمرار البرنامج بدون مشاكل

2- دمج جميع الملفات المساعدة للبرنامج في ملف واحد وهو التطبيق بحيث في أول تشغيل للبرنامج يتم فك الملفات بجانب التطبيق

3- عمل برنامج إعداد لإحدى برامجك Setup

4- عمل كراك لإحدى البرامج بحيث يقوم باستبدال التطبيق أو بعض الملفات

5- تشغيل ملف صوت باستخدام sndpalysound من ضمن المصادر

6- استخدام الصور والرموز والمشيرات من داخل البرنامج

7- استخدام صفحات HTML من داخل البرنامج عن طريق البرتوكول res://

8- استخدام عروض فلاشات من داخل البرنامج

9- وأمثلة أخرى كثيرة يمكنك معرفتها وقت الحاجة لها

الشرح :

1 - إضافة ملف المصادر وإضافة الملفات إلى ملف المصادر

أنشئ مشروع جديد Standard EXE

اذهب إلى القائمة Add-In ثم Add-In Manager ..

سوف تظهر لك النافذة Add-In Manager

وهي على الشكل الآتي

1(4).jpg

1- حدد VB 6 Resource Editor

2- اقرأ الوصف

3- حدد Loaded/Unloaded بجعل إشارة صح في المربع

4- حدد Load on Startup بجع إشارة صح في المربع إذا كنت تريد تحميل VB 6 Resource

Editor عند بدء تشغيل فيجوال بيسيك 6

5- أختر موافق Ok إذا أردت إضافة VB 6 Resource Editor

6- أختر إلغاء الأمر Cancel إذا أردت إلغاء الأمر بدون إضافة VB 6 Resource Editor

7- للمزيد من المعلومات أنقر على تعليمات Help

الآن اذهب إلى قائمة مشروع Project)) ستجد أنه تم إضافة Add New Resource File وستجد أن

رمزه هو 2(5).JPG , أختره بالنقر عليه

سوف تظهر لك نافذة VB Resource Editor وهي على الشكل الآتي

3(5).jpg

1- ملف مصادر جديد

2- فتح ملف مصادر وهو من النوع Res

3- حفظ ملف المصادر

4- تحرير خصائص العنصر المحدد

5- إنشاء نسخة مماثلة للعنصر المحدد

6- تراجع عن العملية الأخيرة

7- حذف العنصر المحدد

8- إضافة مصدر نصوص String Table :

سوف تظهر لك نافذة Edit String Tables وهي على الشكل الآتي

4(5).JPG

8 - 1 - إضافة صف جديد

8 - 2 - إضافة جدول جديد

8 - 3 - خصائص الصف المحدد

8 - 4 - إعادة ترقيم الصفوف

8 - 5 - قص

8 - 6 - نسخ

8 - 7 - لصق

8 - 8 - تراجع

8 - 9 - تصدير النص إلى الحافظة

8 - 10 - حذف صف

8 - 11- حذف جدول

8 - 12 - تعليمات

8 - 13 - رقم الـ ID الذي بواسطته يتم تحديد النص

8 - 14 - الترميز

8 - 15 - النصوص

9- إضافة مصدر مؤشرات (تظهر نافذة تقوم من خلالها تحديد المؤشر الذي تريد إضافته)

10- إضافة مصدر أيقونات (تظهر نافذة تقوم من خلالها تحديد الأيقونة الذي تريد إضافتها)

11- إضافة مصدر صور نقطية (تظهر نافذة تقوم من خلالها تحديد الصورة النقطية الذي تريد إضافتها)

12- إضافة جميع أنواع الملفات (*.*)

13- تعليمات

2 - التعامل البرمجي

سنتطرق بإذن الله إلى شرح التالي :

1. التعامل مع النصوص (Table String)

2. التعامل مع الصور النقطية والأيقونات والمشيرات

3. التعامل مع ملفات الصوت wav باستخدام SndPlaySound

4. التعامل مع الملفات الأخرى مثل الفلاش والصور المتحركة وجميع الملفات *.*

5. التعامل مع صفحات الويب باستخدام البرتوكول res://

1. التعامل مع النصوص (Table String)

الفائدة : إضافة نصوص ثابتة ومن ثم استدعاها

مثال عليها : إضافة جميع كلمات البرنامج باللغتين العربية والانجليزية حتى يتمكن المستخدم من اختيار اللغة المناسبة

طريقة التعامل :

لكل نص رقم معرف (id) يمكننا بواسطته تمييز النصوص وهو لا يتكرر أبدا

ويمكننا استدعاء النصوص بواسطة الأمر LoadResString بهذه الطريقة :

A=LoadResString(id)

شرح مثال :

لنفترض أن لدينا هذه البيانات في الجداول

5(3).jpg

وحددنا خيارين للمستخدم .. اللغة العربية أو اللغة الإنجليزية .

فعند اختياره للغة العربية فسيتم كتابة كلمة "&ملف" في القائمة mnuFile ونكتب الكود التالي :

mnuFile.Caption = LoadResString(101)

وعندما يحدد اللغة الإنجليزية نكتب الكود التالي :

mnuFile.Caption = LoadResString(102)

2. التعامل مع الصور النقطية والأيقونات والمشيرات

الفائدة : إضافة صور وأيقونات ومشيرات ومن ثم استدعاها وقت تنفيذ البرنامج

مثال على استخدامها : المكان الأنسب لوضع الصور والرموز والمشيرات

طريقة التعامل :

لكل صورة أو مؤشر أو أيقونة رقم معرف (id) يمكننا بواسطته استدعاء الصورة أو الرمز وهو لا يتكرر أبدا

ويمكننا استدعاء الصورة أو الرمز أو المؤشر بواسطة الأمر LoadResPicture بهذه الطريقة :

A=LoadResString(id,restype)

ونستبدل الid برقم معرف الصورة أو الرمز أو المؤشر ونستبدل الـ restype بأحد هذه القيم :

1 – vbResBitmap : للصور النقطية

2 – vbResCursor : للمؤشرات

3 – vbResIcon : للأيقونات

شرح مثال :

في الصورة التالية توجد ثلاث عناصر تستخدم المعرف 101 , ولكن أحدهما صورة نقطية وآخر مؤشر وآخر رمز

6(1).jpg

فلو أردنا إظهار الصورة 101 في Picture1 نكتب الكود التالي :

Picture1.Picture = LoadResPicture(101, vbResBitmap)

ولو أردنا تغيير مؤشر الفأرة للنافذة إلى المؤشر رقم 101 نكتب الكود التالي :

'يجب تحديد مخصص ليظهر المؤشر الذي نحدده في السطر التالي 
Form1.MousePointer = vbCustom
Form1.MouseIcon = LoadResPicture(101, vbResCursor)

ولو أردنا تغيير أيقونة النافذة إلى الأيقونة رقم 101 نكتب الكود التالي :

Form1.Icon = LoadResPicture(101, vbResIcon)

ويمكننا استخدام الرموز كمؤشرات وأيضا يمكننا استخدام المؤشرات كرموز.

3. التعامل مع ملفات الصوت wav باستخدام SndPlaySound

الفائدة : إضافة ملفات صوتية wav وتشغلها في برنامجك .. يفضل عدم استخدام الملفات الكبيرة

مثال على استخدامها : صوت عند النقر على أحد الأزرار

طريقة التعامل :

في الصورة التالية :

3(5).jpg

انقر على Add custom Resource (رقم 12) قم بتحديد ملف الصوت

ستجد أنه تم إضافة تصنيف (نوع Type) جديد افتراضيا "CUSTOM" ويوجد فيه العنصر 101 وهو الملف الصوتي ..

بمكانك تغير نوع الملف مثلا إلى Sound وذلك بالنقر بالزر الأيمن على العنصر 101 ومن ثم اختيار Properties ثم قم بتغيير

Type إلى "Sound" ..

ويتم تشغيل ملف الصوت بالصيغة التالية :

يتم كتابة السطر التالي في نفس الفورم في الGeneral :

Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

أو كتابة السطر التالي في مديول :

Public Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

ثم يتم كتابة الكود التالي في المكان المناسب :

Dim bSound() As Byte
bSound = LoadResData(id, "CustomType")
sndPlaySound bSound(0), 5

يتم استبدال id برقم معرف ملف الصوت في ملف المصادر

ويتم استبدال CustomType بالنوع الذي تم تحديده CUSTOM افتراضيا أو SOUND الخ ...

شرح مثال :

لتشغيل الصوت المعرف بـ 101 المصنف من النوع CUSTOM عند النقر على زر خروج

أضف زر وسمه cmdExit "خروج"

أضف مديول جديد واكتب فيه الكود التالي :

Public Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

ثم اكتب الكود التالي في cmdExit_Click()

Dim bSound() As Byte
bSound = LoadResData(101, "CUSTOM")
sndPlaySound bSound(0), 5

4. التعامل مع الملفات الأخرى مثل الفلاش والصور المتحركة وجميع الملفات *.*

الفائدة : استخراج ملف من برنامج (التطبيق نفسه exe) ثم تشغله أو التعامل مع ب open أو بأي أداة

مثال على استخدامها : تشغيل ملف فلاش أو استرجاع ما تم حذفه بالخطأ أو عمل برنامج إعداد Setup

طريقة التعامل :

بنفس طريقة إضافة ملف صوتي إلى المصادر قم بإضافة أي ملف آخر Binary أو نصي

وقم بإعطائه النوع المناسب افتراضيا CUSTOM

ويتم استخراج الملف بالطريقة التالية :

Dim myArray() As Byte
myArray = LoadResData(id, "CUSTOM")
myFile = FreeFile
Open FileName For Binary Access Write As #myFile
Put #myFile, , myArray
Close #myFile

حدد ملفا مؤقتا في المتغير FileName

الآن أصبح لدينا الملف الذي كان يوجد في برنامجنا ويمكننا التعامل معه بكامل التعامل

شرح مثال :

لاستدعاء ملف فلاش 101 من ملف مصادر وتشغيله :

قم بوضع أداة ShockwaveFlash1 على الفورم

اكتب الكود التالي في مديول جديد : (وهو عبارة عن إجراء فرعي يقوم باستخراج الملف)

Public Sub LoadDataIntoFile(id As Integer, FileName As String)
Dim myArray() As Byte
Dim myFile As Long
If Dir(FileName) = "" Then
myArray = LoadResData(id, "CUSTOM")
myFile = FreeFile
Open FileName For Binary Access Write As #myFile
Put #myFile, , myArray
Close #myFile
End If
End Sub

ثم اكتب هذا الكود في الفورم :

Private Sub Form_Load()
LoadDataIntoFile 101, App.Path & "\quran.swf"
ShockwaveFlash1.Movie = App.Path & "\quran.swf"
ShockwaveFlash1.Play
Kill App.Path & "\quran.swf" 'يفضل حذف ملفاتك المؤقت أول بأول
End Sub

5. التعامل مع صفحات الويب باستخدام البرتوكول res://

الفائدة : تصفح صفحات ويب بدون استخراجها من برنامجك باستخدام البروتوكول res://

مثال على استخدامها : عرض التعليمات في برنامجك بصيغة html

قم بتشغيل Internet Explorer ثم اكتب في شريط العنوان الخاص به التالي :

res://shdoclc.dll/pagerror.gif 
res://shdoclc.dll/dnserror.htm
res://shdoclc.dll/refresh.gif

ستجد أن صفحة الخطأ المزعجة الخاصة ب IE ظهرت لك ثم بعض صورها هذه الملفات جميعها موجودة في الملف

C:\WINDOWS\system32\shdoclc.dll

طريقة التعامل :

بنفس طريقة إضافة ملف صوتي إلى المصادر قم بإضافة أي ملف صفحة ويب html

وقم بإعطائه النوع المناسب افتراضيا CUSTOM اقترح HTML

قم بتغير اسم الملف مثلا إلى xxxx.html وذلك بالنقر بالزر الأيمن على العنصر ومن ثم اختيار Properties ثم قم بتغيير

Id إلى "xxxx.html" أو إلى "xxxx.htm"..

الآن بعد حفظ ملف المصادر وحفظ المشروع قم بعمل make EXE لمشروعك الآن بإمكانك تشغيل الصفحة من خلال Internet

Explorer بالصيغة التالية :

Res://C:\YourProjectPath\YourProgram.exe/CustomType/YourPage.html

أي : البروتوكول://مسار_برنامجك\برنامجك/نوع_المصدر/الصفحة

CustomType : افتراضيا تكون CUSTOM ويفضل ان تكون HTML

شرح مثال :

لعرض الصفحة index.html في الفورم باستخدام الأداة WebBrowser1 من خلال المصادر

في البداية قم بإضافة الأداة بالذهاب إلى القائمة Project ثم Componets (Ctrl+T) ثم أضف

Microsoft Internet Control

قم بإضافة الملف index.html إلى المصادر واجعله من النوع HTML وسمه (id) : index.html

وأحفظ ملف المصادر ...

الآن اكتب في Form_Load() الكود التالي :

WebBrowser1.Navigate "res://" & App.Path & "\" & App.EXEName & ".exe" & "/html/index.html"

App.Path تعطينا مسار البرنامج

App.EXEName تعطينا اسم برنامجك بدون .exe لذلك قمت بإضافة .exe

ملاحظة :حاول أن تركز على / و \ فهناك فرق بينهما كبير في هذه العملية

ملاحظة : يجب عليك أولا صنع البرنامج exe قبل التجربة

هذا وصلى الله وسلم على سيدنا محمد وعلى آله وصحبه أجمعين ...

لا تنسوني من دعاءكم

والله أعلم ..

تم تعديل بواسطه المبرمج عبدالكريم
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

14 إجابة على هذا السؤال .

  • 0

رفع الموضوع .. واتمنى حل مشكلة error in database لانها سببت لي مشاكل اليوم...

تم تعديل بواسطه المبرمج عبدالكريم
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

يعطيك العافية أخ المبرمج عبدالكريم على ما قدمته

وما لي إلا أن 015.gif

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

تمام التمام

اخي عبدالكريم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بارك الله فيك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

واجهت مشاكل في حفظ الكتب اللكتروني

لا اعرف هل احد عانى من هذه المشكلة

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اخي هاني و COMFORT الله يبارك فيكم

واجهت مشاكل في حفظ الكتب اللكتروني

لا اعرف هل احد عانى من هذه المشكلة

قمت الآن مرة أخرى بتحميل الملف وتم تحميله وتشغيله بنجاح!

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا لك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

مشكور أخي عبد الكريم على هذا الشرح القيم و جزاك الله ألف خير

وجاري التحميل .......

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

عفوا ,,

ولو يتم نسخ الموضوع لقسم الدروس يكون افضل

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الله عليك أخى المبرمج عبدالكريم

tks.gif

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
الله عليك أخى المبرمج عبدالكريم

حياك الله اخي وجزاك الله خير على تفاعلك ..

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
حياك الله اخي وجزاك الله خير على تفاعلك ..

ممكن طريقه مثال عملى لتشغيل الفيديو

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

مشكور أخى على الموضوع

ولكن صادفتني عدت مشاكل أرجو أخى أن تساعدنى في حلها

أنا رفعت ملف علي رسورس وأود خفظ هذا الملف خارج البرنامج

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

أرجو أن تجيبني على الاميل أخي

[email protected]

و مشكور أخى البطل على الموضوع

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
ممكن طريقه مثال عملى لتشغيل الفيديو

اخي نفس فكرة الفلاش , ولكن استخدم الادوات الخاصة بتشغيل الفيديو

وأعتذر عن تلبية طلبك وذلك لانني لم اعد استخدم vb6 لوجود vb9 المسمى vb.net 2008

أعتذر عن التأخر عن الرد

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .