اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

عبد الله فتحي

عضوية شرفية
  • Posts

    259
  • تاريخ الانضمام

  • تاريخ اخر زياره

كل منشورات العضو عبد الله فتحي

  1. بسم الله الرحمن الرحيم الإخوة الكرام رواد المنتدى .. تحدثنا في موضوع سابق سابق عن كيفية التعامل مع الريجستري، وقمنا بتضمين Module لتسهيل التعامل مع الريجستري وذلك من خلال استخدام توابع ال API .. واليوم وفي هذا الموضوع سنشرح طريقة أخرى للتعامل مع الريجستري وهي طريقة سهلة جداً سنعتمد فيها على استخدام الكائن Wscript .. الأمر لا يتعدى ثلاثة أسطر من الكود .. في البداية لابد أن نقوم بتعريف الكائن بواسطة الكود التالي: Dim WSH As Object Set WSH = CreateObject("Wscript.Shell") بعدها سيكون تعاملنا مع الريجستري إما بالإضافة أو الحذف أو استرجاع القيم، وكل عملية من هذه العمليات لا تحتاج إلى أكثر من سطر كودي واحد لعملها .. ولنر ذلك معاً: لإضافة مدخل قيمة جديد إلى الريجستري: WSH.RegWrite "HKCU\Officena\Example", 1, "REG_DWORD" لاحظ أننا استخدمنا الوظيفة RegWrite وقمنا بتمرير ثلاث قيم إلى هذه الوظيفة، وهي: 1. اسم مدخل القيمة الجديد الذي نريد إضافته ومساره. 2. قيمة هذا المدخل الجديد. 3. نوع هذا المدخل ولاحظ أنه هنا من نوع REG_DWORD، ويمكن أن يكون REG_SZ أو REG_BINARY أو REG_MULTI_SZ أو أي نوع تريده .. ولإضافة مفتاح سنستخدم نفس الطريقة السابقة، مع تغيير طفيف، لاحظ: WSH.RegWrite "HKCU\Officena\Codes\", 1, "REG_DWORD" لحذف مدخل قيمة موجود مسبقاً: WSH.RegDelete "HKCU\Officena\Example" لاحظ أننا سنمرر اسم المدخل الذي نريد حذفه إلى الوظيفة RegDelete .. ولحذف مفتاح موجود مسبقاً نستخدم نفس الطريقة السابقة مع تغيير بسيط، لاحظ: WSH.RegWrite "HKCU\Officena\Codes\" ولمعرفة قيمة مدخل موجود بالريجستري: Print WSH.RegRead("HKCU\Al-ebda3.info\Example") ولمعرفة قيمة مفتاح موجود بالريجستري: Print WSH.RegRead("HKCU\Officena\Codes\") أتمنى أن أكون قد وُفقت في شرحي لذلك .. وأتمنى للجميع التوفيق
  2. بسم الله الرحمن الرحيم مرفق مع هذه المشاركة موديول جاهز لتسهيل التعامل مع الريجستري، ورغم أنه من الأفضل أن تقوم بعمل أكوادك بنفسك إلا أنه ربما تواجه بعض الصعوبة في البداية، او ربما لا يكون لديك الوقت الكافي، أو ربما تعرف هذه الأكواد ولكنها تفتقر إلى التنظيم .. وفي كل الأحوال السابقة فإن هذا الموديول يعد خياراً سهلاً ومريحاً .. وفيما يلي سأشرح كيفية التعامل مع هذا الموديول: هذا الموديول يحتوي على 14 (أربعة عشر) وظيفة، هي إجمالاً: CreateRegKey DelRegKey SaveRegString GetRegString SaveRegLong GetRegLong SaveRegByte GetRegByte DelRegValue CopyRegByte CopyRegString CopyRegLong GetRegSubKeyList RegistryEnumerateValues وفيما يلي شرحها بالتفصيل، ويجب أن تكون على معرفة ولو بسيطة بالريجستري حتى تستطيع فهم المصطلحات التي سنذكرها، وإذا لم يكن لديك أي خلفية سابقة عن الريجستري فيفضل إلقاء نظرة بسيطة على الدروس في الرابط التالي: تعلم الريجستري والآن لنبدأ: 1. الوظيفة: CreateRegKey البناء: (CreateRegKey(hKey,strpath وتقوم بإنشاء مفتاح جديد، وستحتاج هذه الوظيفة إلى تمرير قيمتين الأولى hKey وتعني المفتاح الرئيسي، والثانية strpath وتعني المسار للمفتاح الفرعي الذي نريد إنشاءه .. مثال: ("x = CreateRegKey(HKEY_CURRENT_CONFIG, "Officena\visualbasic المثال السابق سيقوم بإنشاء مفتاح فرعي باسم visualbasic في المسار التالي HKEY_CURRENT_CONFIG\Officena ولكن ماذا لو أن المسار السابق غير موجود هنا سيقوم الفيجول بيسيك بإنشائه أيضاً .. 2. الوظيفة: DelRegKey البناء: (DelRegKey(hKey,strpath على عكس الوظيفة السابقة فهي تقوم بحذف مفتاح موجود بالفعل، وستحتاج هذه الوظيفة أيضاً إلى تمرير قيمتين الأولى hKey وتعني المفتاح الرئيسي، والثانية strpath وتعني المسار للمفتاح الفرعي الذي نريد حذفه .. مثال: ("x = DelRegKey(HKEY_CURRENT_CONFIG, "Officena\visualbasic المثال السابق سيقوم بحذف المفتاح الفرعي visualbasic الموجود في المسار التالي HKEY_CURRENT_CONFIG\Officena، وإذا تمت عملية الحذف بنجاح فإن المتغير X سيحمل القيمة (0)، أما إذا لم تتم العملية إما لعدم وجود المفتاح من الأساس أو لأي سبب آخر فإن المتغير X سيعود بالقيمة (2) .. 3. الوظيفة: SaveRegString البناء: (SaveRegString(hKey,strpath,strvalue,strdata تقوم هذه الوظيفة بإنشاء مدخل قيمة جديد من نوع String value، وللذين يجدون صعوبة في فهم هذه المصطلحات أذكرهم بالرابط السابق لدروس الريجستري، وستحتاج هذه الوظيفة إلى تمرير أربع قيم الأولى hKey وتعني المفتاح الرئيسي، والثانية strpath وتعني المسار للمفتاح الفرعي الذي نريد إضافة مدخل قيمة بداخله، والثالثة strvalue وتعني اسم مدخل القيمة الذي نريد إنشاءه، والرابعة strdata وتعني قيمة هذا المدخل الذي سننشئه .. مثال: ("x = SaveRegString(HKEY_CURRENT_CONFIG, "Officena\visualbasic", "code1", "connection to internet المثال السابق سيقوم بإنشاء مدخل قيمة من نوع string value ويحمل الاسم code1 في المسار التالي HKEY_CURRENT_CONFIG\Officena\visualbasic، وهذا المدخل ستكون قيمته connection to inernet .. وعلى فكرة من الجيد فتح الريجستري لمعرفة هل تمت التغييرات بنجاح أم لا، ومن المهم أن تكون حذراً أيضاً في هذا الجانب، لأن أي خطأ من الممكن أن يكلفك الكثير ... 4. الوظيفة: GetRegString البناء: ([GetRegString(hKey,strpath,strvalue,[Default تقوم هذه الوظيفة بمعرفة قيمة مدخل قيمة من نوع string value موجود مسبقاً، أي أننا نريد معرفة ماهي قيمته، وستحتاج هذه الوظيفة إلى تمرير أربع قيم ثلاثة منها إجبارية والأخير اختياري، الأولى hKey وتعني المفتاح الرئيسي، والثانية strpath وتعني المسار للمفتاح الفرعي الذي نريد معرفة قيمة مدخل القيمة الموجود بداخله، والثالثة strvalue وتعني اسم مدخل القيمة الذي نريد معرفة قيمته، والرابعة [default] وكما ترى فهو موضوع بين أقواس معقوفة للدلالة على أنها قيمة اختيارية أي يمكن تجاهلها، وهنا نضع قيمة افتراضية تظهر لنا في حال لم يكن مدخل القيمة الذي نبحث عن قيمته موجوداً .. مثال: ("x = GetRegString(HKEY_CURRENT_CONFIG, "Officena\visualbasic", "code1", "none المثال السابق سيقوم بمعرفة قيمة المدخل من نوع string value والذي يحمل الاسم code1 والموجود في المسار التالي HKEY_CURRENT_CONFIG\Officena\visualbasic، ويضع هذه القيمة في المتغيير X، أما إذا لم يجد هذا المدخل فسيقوم بجعل المتغير X يساوي none .. أرجو أن تكون الأمور واضحة حتى الآن .. 5. الوظيفة: SaveRegLong البناء: (SaveRegLong(hKey,strpath,strvalue,strdata تقوم هذه الوظيفة بإنشاء مدخل قيمة جديد من نوع DWORD value، وستحتاج هذه الوظيفة إلى تمرير أربع قيم الأولى hKey وتعني المفتاح الرئيسي، والثانية strpath وتعني المسار للمفتاح الفرعي الذي نريد إضافة مدخل قيمة بداخله، والثالثة strvalue وتعني اسم مدخل القيمة الذي نريد إنشاءه، والرابعة strdata وتعني قيمة هذا المدخل الذي سننشئه .. مثال: (x = SaveRegLong(HKEY_CURRENT_CONFIG, "Officena\visualbasic", "code2", 123 المثال السابق سيقوم بإنشاء مدخل قيمة من نوع DWORD value ويحمل الاسم code2 في المسار التالي HKEY_CURRENT_CONFIG\Officena\visualbasic، وهذا المدخل ستكون قيمته 123 .. 6. الوظيفة: GetRegLong البناء: ([GetRegLong(hKey,strpath,strvalue,[Default تقوم هذه الوظيفة بمعرفة قيمة مدخل قيمة من نوع DWORD value موجود مسبقاً، أي أننا نريد معرفة ماهي قيمته، وستحتاج هذه الوظيفة إلى تمرير أربع قيم ثلاثة منها إجبارية والأخير اختياري، الأولى hKey وتعني المفتاح الرئيسي، والثانية strpath وتعني المسار للمفتاح الفرعي الذي نريد معرفة قيمة مدخل القيمة الموجود بداخله، والثالثة strvalue وتعني اسم مدخل القيمة الذي نريد معرفة قيمته، والرابعة [default] وكما ترى فهو موضوع بين أقواس معقوفة للدلالة على أنها قيمة اختيارية أي يمكن تجاهلها، وهنا نضع قيمة افتراضية تظهر لنا في حال لم يكن مدخل القيمة الذي نبحث عن قيمته موجوداً .. مثال: (x = GetRegLong(HKEY_CURRENT_CONFIG, "Officena\visualbasic", "code2", 111 المثال السابق سيقوم بمعرفة قيمة المدخل من نوع DWORD value والذي يحمل الاسم code2 والموجود في المسار التالي HKEY_CURRENT_CONFIG\Officena\visualbasic، ويضع هذه القيمة في المتغيير X، أما إذا لم يجد هذا المدخل فسيقوم بجعل المتغير X يساوي (111) .. 7. الوظيفة: SaveRegByte البناء: (SaveRegByte(hKey,strpath,strvalue,strdata تقوم هذه الوظيفة بإنشاء مدخل قيمة جديد من نوع Binary value، وستحتاج هذه الوظيفة إلى تمرير أربع قيم الأولى hKey وتعني المفتاح الرئيسي، والثانية strpath وتعني المسار للمفتاح الفرعي الذي نريد إضافة مدخل قيمة بداخله، والثالثة strvalue وتعني اسم مدخل القيمة الذي نريد إنشاءه، والرابعة strdata وتعني قيمة هذا المدخل الذي سننشئه .. مثال: (x = SaveRegByte(HKEY_CURRENT_CONFIG, "Officena\visualbasic", "code3", 33 المثال السابق سيقوم بإنشاء مدخل قيمة من نوع Binary value ويحمل الاسم code3 في المسار التالي HKEY_CURRENT_CONFIG\Officena\visualbasic، وهذا المدخل ستكون قيمته 33 .. 8. الوظيفة: GetRegByte البناء: ([GetRegByte(hKey,strpath,strvalue,[Default تقوم هذه الوظيفة بمعرفة قيمة مدخل قيمة من نوع Binary value موجود مسبقاً، أي أننا نريد معرفة ماهي قيمته، وستحتاج هذه الوظيفة إلى تمرير أربع قيم ثلاثة منها إجبارية والأخير اختياري، الأولى hKey وتعني المفتاح الرئيسي، والثانية strpath وتعني المسار للمفتاح الفرعي الذي نريد معرفة قيمة مدخل القيمة الموجود بداخله، والثالثة strvalue وتعني اسم مدخل القيمة الذي نريد معرفة قيمته، والرابعة [default] وكما ترى فهو موضوع بين أقواس معقوفة للدلالة على أنها قيمة اختيارية أي يمكن تجاهلها، وهنا نضع قيمة افتراضية تظهر لنا في حال لم يكن مدخل القيمة الذي نبحث عن قيمته موجوداً .. مثال: (x = GetRegByte(HKEY_CURRENT_CONFIG, "Officena\visualbasic", "code3", 11 المثال السابق سيقوم بمعرفة قيمة المدخل من نوع Binary value والذي يحمل الاسم code3 والموجود في المسار التالي HKEY_CURRENT_CONFIG\Officena\visualbasic، ويضع هذه القيمة في المتغيير X، أما إذا لم يجد هذا المدخل فسيقوم بجعل المتغير X يساوي 11 .. 9. الوظيفة: DelRegValue البناء: (DelRegKey(hKey,strpath,strvalue هذه الوظيفة تقوم بحذف مدخل قيمة موجود بالفعل بغض النظر عن نوعه، وستحتاج هذه الوظيفة إلى تمرير ثلاث قيم الأولى hKey وتعني المفتاح الرئيسي، والثانية strpath وتعني المسار للمفتاح الفرعي الذي يحتوي على مدخل القيمة نريد حذفه، والثالثة strvalue وتعني مدخل القيمة الذي نريد حذفه .. مثال: ("x = DelRegValue(HKEY_CURRENT_CONFIG, "Officena\visualbasic", "code1 المثال السابق سيقوم بحذف مدخل القيمة code1 الموجود في المسار التالي HKEY_CURRENT_CONFIG\Officena\visualbasic .. 10. الوظيفة: GetRegSubKeyList البناء: (GetRegSubKeyList(hKey,strpath وتقوم هذه الوظيفة بإعطائنا المفاتيح الفرعية داخل مفتاح معين، وتحتاج هذه الوظيفة إلى تمرير قيمتين الأولى hKey وتعني المفتاح الرئيسي، والثانية strpath وتعني المسار للمفتاح الفرعي الذي نريد معرفة المفاتيح الفرعية بداخله ويمكن تمرير قيمة فارغة وهنا سيتم عرض المفاتيح الفرعية داخل المفتاح الرئيسي .. تقوم هذه الوظيفة بإعادة المفاتيح الفرعية على شكل مصفوفة في متغير من نوع Variant .. يمكننا بعد ذلك أن نقوم بعرض هذه المصفوفة في مربع قائمة List Box .. وبالمثال يتضح المقال: مثال: XGroup = GetRegSubKeyList(HKEY_LOCAL_MACHINE, "SOFTWARE") For Each XElemens In XGroup List1.AddItem XElemens Next المثال السابق يقوم بتجميع المفاتيح الفرعية الموجودة تحت المسار HKEY_LOCAL_MACHINE\SOFTWARE ويقوم بوضعها في المتغير XGroup ثم بعد ذلك يقوم بعرضها في مربع القائمة List1 .. 11. الوظيفة : RegistryEnumerateValues البناء: RegistryEnumerateValues eRootKey, strKeyName, astrValues(), lngValueCount تقوم هذه الوظيفة بإعطائنا مدخلات القيم الموجودة تحت أي مفتاح نريده، وتحتاج هذه الوظيفة إلى تمرير أربع قيم، الأولى eRootKey وتعني المفتاح الرئيسي، والثانية strKeyName وتعني المسار للمفتاح الفرعي الذي نريد معرفة مدخلات القيم بداخله، والثالثة astrValues() وهو مصفوفة من نوع نص، ولابد أن تكون معرفة مسبقاً، وفائدتها أنه سيتم إرجاع مدخلات القيم بها، والرابعة lngValueCount وهو متغير رقمي، وفائدته أنه سيحتوي على عدد مدخلات القيم الموجودة بالمفتاح .. يمكننا بعد ذلك أن نقوم بعرض المصفوفة التي تحصلنا عليها في مربع قائمة List Box .. وإليك المثال: مثال: Dim astrValues() As String Dim lngValueCount As Long RegistryEnumerateValues HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Run", astrValues(), lngValueCount If Not lngValueCount = 0 Then For Each XElemens In astrValues List1.AddItem XElemens Next Else MsgBox "المسار الذي حددته لا يحتوي على أي مدخلات قيم" End If المثال السابق يقوم بتجميع مدخلات القيم في مصفوفة ومن ثم عرضها في مربع قائمة List Box، وفي حال كون المسار لا يحتوي على مدخلات قيم فإنه يقوم بإظهار رسالة تخبر بذلك .. يكفي أن نعرف الوظائف السابقة لكي نتمكن من التعامل مع الريجستري أما الوظائف الباقية وهي: 12. الوظيفة: CopyRegByte 13. الوظيفة: CopyRegString 14. الوظيفة: CopyRegLong فهي تقوم بنسخ مدخل القيمة من مكان لآخر، وإذا أردتم أن أشرحها فأنا جاهز لذلك .. في الختام تحياتي الخالصة لكم جميعاً .. وفي حال وجود صعوبات في فهم هذا الموديول بإمكانكم السؤال في هذا الموضوع وستجدون الحل بإذن الله .. وإلى مزيد من التقدم .. ModRegistry.zip
  3. كل الشكر للأخ خضر على هذه المعلومات المفيدة .. وبما أن الموضوع يهمكم فقد قمت بإضافة بعض الدروس في قسم الدعم الفني: http://www.officena.net/ib/index.php?showtopic=5343 وأتمنى لكم التوفيق ..
  4. بالفعل مسألة غريبة ،، ولا أعتقد أن حجم ملف الصورة ممكن أن يؤثر بهذه الدرجة .. كم عدد صفحات الملف وما الذي يحويه ؟؟؟
  5. في الرابط التالي يوجد كتابين يقدمان نبذة جيدة عن الأوفيس وهما بعنوان مقدمة تطبيقات الحاسب و تطبيقات الحاسب المتقدمة http://cdd.gotevot.edu.sa/college/computer/com.htm
  6. كما ذكر لك الأخ المهاجر .. ويمكنك الاستفادة من رموز جديدة من خلال تحميل خطوط جديدة تحتوي على رموز .. أما إذا كنت تريد صنع هذه الرموز بنفسك فيمكنك ذلك من خلال عمل خط جديد يحتوي عليها .. والله أعلم ..
  7. الماكرو عبارة عن كود VBA يتم عمله للقيام بوظيفة معينة أو لتسهيل مهمة ما .. طبعاً استخداماته لا يمكن حصرها، فكل واحد يستفيد منه حسب حاجته .. يمكنك أن لا تستخدم أي ماكروات ولا يوجد أي مشكلة ..
  8. نا لم أجربها مع الأكسس سابقاً ولكن هي مع الفيجول أكثر من رائعة حاولت الآن تجربتها ولكن فشلت المحاولة
  9. قام الأخ رغيد الطيب ببرمجة أزرار جميلة الشكل لاستخدامها في الفيجول بيسيك وأعتقد أنه يمكن تجربتها مع نماذج الأكسس على أي حال هي بالمرفقات OCX Files.rar
  10. من ناحية التسلية :lol: :lol: أما من ناحية الجدوى فقد كان تفكيرك منطقياً عند محاولة عكس العكس وبالتالي الحصول على نتيجة إيجابية، ولكن يبدو أن المحاولة قد فشلت :crash:
  11. إذا كان لديك الأوفيس 2000 أو ما بعده فعليك باستخدام طريقة الأخ منسق لأنها بالفعل طريقة سهلة وعملية وفي الإصدارات الأقدم يمكنك استخدام طريقة الأخ الفاروق بعملها يدوياً، كما أن هناك بعض الطابعات التي تقدم هذه الميزة في البرنامج المرفق معها بغض النظر عن إصدارة الأوفيس
  12. بإمكانك استخدام صور (wmf غالباً) - إذا لم تجد ما يعجبك - كبديل لها أما إضافة شكل خاص بك إلى هذه الأشكال فلا أعتقد يمكنك ذلك ،، وربما تقوم بعمل ماكرو يضيف صورة من مكان معين، وتضع له زر على شريط الأدوات ،، والله أعلم
  13. ما هي المشكلة إذاً ؟؟.. قم بإضافتهم جميعهم في مربع واحد واحذف بقية المربعات انظر لمثال الأخ المهاجر
  14. :d بالفعل أمر غريب إلغاء هذه الخاصية أثناء تسجيل الماكرو ولكن ربما يوجد حل بديل ...
  15. لا يمكن - والله أعلم - عمل ذلك من خلال الماكرو ما دام الوورد نفسه يقوم بإلغاء هذه الميزة
  16. ما الذي تقصده بمربع واحد ؟؟ انظر الصورة !!
  17. لم أفهم السؤال .. هل من الممكن التوضيح أكثر ؟؟
  18. إذا كنت تقصد زيادة عدد المرؤوسين إلى 8 قم بتحديد المربع الرئيسي ومن شريط الأدوات الخاص بالتخطيط الهيكلي انقر على إدراج شكل >> مرؤوس إذا كنت تقصد شيئاً غير ذلك أرجو أن توضحه
  19. غريبة الكود شغال معاي على أي حال المهم الفكرة فقط ( كود يقوم بعكس ترتيب الحروف )
  20. اضغط على Ctrl + G ثم أدخل رقم الصفحة التي تريد الوصول إليها
  21. لا أعتقد أن هذا نوع من الحماية وعلى أي حال لماذا لا نقوم بعمل ماكرو يقوم بإرجاع الملف إلى حالته بعد نسخه من ملف الأكروبات عن طريق تغيير ترتيب الأحرف .. أعتقد أن هذا الأمر ممكن .. وهذا مثال يمكنكم التعديل عليه: Sub Macro() 'الذهاب إلى أول المستند Selection.HomeKey Unit:=wdStory 'معرفة عدد الكلمات في المستند Set wdDTWC = Dialogs(wdDialogToolsWordCount) wdDTWC.Execute dlgwordcount$ = wdDTWC.Words 'تحديد كلمة كلمة For o = 1 To dlgwordcount$ Selection.Find.ClearFormatting With Selection.Find .Text = "<?*>" .MatchWildcards = True End With Selection.Find.Execute 'وضع الكلمات في متغيرات Dim x As String Dim s As String x = Len(Selection) s = Selection 'قلب الكلمة إلى وضعها الطبيعي For i = 0 To x - 1 Selection.TypeText Text:=Mid(s, (x - i), 1) Next Next End Sub
×
×
  • اضف...

Important Information