2. سياقات تنفيذ VBSCRIPT
2.1. مقدمة
لا يعمل برنامج VBScript مباشرة في Windows بل داخل حاوية توفر له سياق تنفيذ وعددًا من الكائنات الخاصة به. بالإضافة إلى ذلك، يمكن لبرنامج VBScript استخدام الكائنات التي يوفرها نظام Windows، والمعروفة باسم كائنات ActiveX.
![]() |
في هذا المستند، سنستخدم حاويتين: Windows Scripting Host، والمعروف اختصارًا بـ WSH، ومتصفح Internet Explorer، الذي سيُشار إليه فيما يلي أحيانًا بـ IE. وهناك العديد من الحاويات الأخرى. على سبيل المثال، تُعد تطبيقات MS-Office حاويات لنسخة معدلة من لغة VB تُسمى VBA (Visual Basic for Applications). هناك أيضًا العديد من تطبيقات Windows التي تسمح للمستخدمين بتجاوز حدود التطبيق من خلال تمكينهم من تطوير برامج تعمل داخل التطبيق وتستخدم كائناته المحددة.
يلعب الحاوية التي يعمل فيها برنامج VBScript دورًا حاسمًا:
- تختلف الكائنات التي يتيحها الحاوية لبرنامج VBScript من حاوية إلى أخرى. على سبيل المثال، يوفر WSH لبرنامج VBS كائنًا يُسمى WScript، والذي يتيح الوصول، على سبيل المثال، إلى مشاركات الشبكة والطابعات الخاصة بجهاز المضيف. من ناحية أخرى، يوفر IE لبرنامج VBS كائنًا يُسمى Document، والذي يمثل مستند HTML بأكمله الذي يتم عرضه. يمكن لبرنامج VBS بعد ذلك معالجة هذا المستند. من ناحية أخرى، يوفر Excel لبرنامج VBA كائنات تمثل المصنفات وأوراق العمل والمخططات، وما إلى ذلك — في الواقع، جميع الكائنات التي يتعامل معها Excel.
- بينما تمنح الكائنات الموجودة في الحاوية برنامج VBScript قوته الكاملة، إلا أنها قد تحد أحيانًا من بعض جوانب وظائفه. على سبيل المثال، لا يمكن لبرنامج VBScript الذي يعمل في متصفح IE الوصول إلى قرص الجهاز المضيف لأسباب أمنية.
لذلك، عند مناقشة برمجة VBScript، من الضروري تحديد الحاوية التي يعمل فيها البرنامج.
في نظام Windows، لا تعد VBScript هي اللغة الوحيدة التي يمكن استخدامها في حاويات WSH أو IE. على سبيل المثال، يمكنك استخدام JScript (=JavaScript) وPerlScript (=Perl) وPython، وما إلى ذلك. تبدو العديد من هذه اللغات، للوهلة الأولى، متفوقة على VBScript. ومع ذلك، تتمتع VBScript ببعض المزايا الهامة:
- تنتشر لغة VB ومتغيراتها VBScript و VBA على نطاق واسع على أجهزة Windows. ويبدو أن معرفة هذه اللغة أمر ضروري.
- إن الكائنات المتاحة للبرنامج، وليس اللغة نفسها، هي التي تجعله قويًا. يتم توفير العديد من هذه الكائنات بواسطة الحاويات، وليس بواسطة اللغات نفسها.
أحد عيوب VBScript هو أنه غير قابل للنقل إلى أنظمة أخرى غير Windows، مثل Unix. في حين أن منافسيه — JavaScript وPerl وPython — قابلون للنقل. إذا كنت بحاجة إلى العمل على أنظمة غير متجانسة، فقد يكون من المفيد أو حتى ضروري استخدام نفس اللغة عبر الأنظمة المختلفة.
2.2. حاوية WSH
تسمح حاوية WSH (Windows Scripting Host) بتشغيل البرامج المكتوبة بلغات مختلفة — مثل VBScript و JavaScript و PerlScript و Python وغيرها — داخل Windows. هناك معيار يجب اتباعه لاستخدام لغة ما داخل WSH. أي لغة تتوافق مع هذا المعيار مؤهلة للتنفيذ داخل WSH. من المتصور أن قائمة اللغات التي تعمل في WSH قد تنمو. يوفر الحاوية للبرامج التي تنفذها كائنات تمنحها قوتها الحقيقية. وهذا يؤدي إلى طمس الفروق بين اللغات، حيث إنها تستخدم جميعها نفس مجموعة الكائنات. وبالتالي، قد يصبح اختيار لغة على أخرى مسألة تفضيل شخصي بدلاً من الأداء.
يتم تشغيل البرامج في WSH باستخدام ملفين قابلين للتنفيذ: wscript.exe و cscript.exe. يوجد wscript.exe عادةً في دليل تثبيت Windows، والذي يشار إليه عادةً بـ %windir%:
C:\ >echo %windir%
C:\WINDOWS
C:\>dir c:\windows\wscript.exe
WSCRIPT EXE 123 280 19/09/01 11:54 wscript.exe
L'exécutable cscript.exe se trouve lui sous %windir%\command :
C:\>dir c:\windows\cscript.* /s
Répertoire de C:\WINDOWS\COMMAND
CSCRIPT EXE 102 450 26/06/01 17:49 cscript.exe
يشير الحرف "w" في wscript إلى Windows، بينما يشير الحرف "c" في cscript إلى وحدة التحكم. يمكن تشغيل البرنامج النصي باستخدام wscript أو cscript. ويكمن الاختلاف في كيفية عرض الرسائل على الشاشة:
- يعرضها wscript في نافذة
- بينما يعرضها cscript على الشاشة
فيما يلي برنامج نصي يسمى hello.vbs يعرض كلمة "hello" على الشاشة:
![]()
لنفتح نافذة DOS ونشغله بالتتابع باستخدام wscript و cscript:
DOS>wscript coucou.vbs

DOS>cscript coucou.vbs
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. Tous droits réservés.
coucou
الفرق بين الوضعين واضح للعيان أعلاه. في هذا المستند، سنستخدم وضع وحدة التحكم cscript بشكل حصري تقريبًا. هذا هو الوضع المناسب لما يُسمى بالتطبيقات "الدفعية"، أي التطبيقات التي لا تتطلب تفاعل المستخدم عبر لوحة المفاتيح. لاحظ نقطتين في النتائج السابقة:
- افترضنا أن الملفين القابلين للتنفيذ wscript.exe و cscript.exe موجودان كلاهما في "مسار" الجهاز، مما يسمح بتشغيلهما بمجرد كتابة اسميهما. لو لم يكن الأمر كذلك، لكان علينا أن نكتب هنا:
- لاحظ أن إصدار WSH المستخدم في هذا المثال وفي بقية الوثيقة هو الإصدار 5.6.
- ملف مصدر البرنامج النصي له الامتداد .vbs. هذا هو الامتداد الخاص بالبرنامج النصي VBScript؛ أما البرنامج النصي JavaScript فيُشار إليه بالامتداد .js.
يحتوي برنامج cscript على خيارات تشغيل متنوعة، يمكن الاطلاع عليها عن طريق تشغيل cscript بدون معلمات:
تعمل الحجة //nologo على منع عرض شعار WSH:
2.3. بنية البرنامج النصي WSH
لقد رأينا للتو أول نص برمجي لنا: hello.vbs
![]()
ذكرنا أن امتداد الملف .vbs يشير إلى نص VBScript. هذا ليس شرطًا. كان بإمكاننا وضع النص في ملف بامتداد .wsf بالشكل التالي الأكثر تعقيدًا:

يؤدي تشغيل هذا البرنامج النصي إلى إخراج النتيجة التالية:
يمكن أن يخلط نص WSH بين اللغات:

يؤدي تشغيل هذا البرنامج النصي إلى إخراج ما يلي:
سنلاحظ النقاط التالية:
- حاوية WSH غير مرتبطة بلغة معينة. يمكن لبرنامج نصي WSH أن يخلط بين اللغات داخل ملف بامتداد .wsf
- ثم يتم تضمين البرنامج النصي بين علامتي <job id="..."> ... </job>
- داخل التطبيق (=job)، يتم ترميز اللغات المستخدمة في أقسام الكود المختلفة بـ <script language="...."> .... </script>
- هذه اللغة الترميزية لها اسم: XML، وهو اختصار لـ eXtended Markup Language. لا تحدد XML أي علامات بحد ذاتها، بل تحدد قواعد لتنظيم العلامات. لذلك، يجب أن نقول هنا إن لغة الترميز المستخدمة في نصوص WSH تتبع معيار XML.
من الآن فصاعدًا، سنستخدم VBScript حصريًا في ملفات .vbs.
2.4. كائن WSCRIPT
يوفر حاوية WSH للبرامج النصية التي تنفذها كائنًا يسمى wscript. يحتوي الكائن على خصائص وأساليب:
![]() |
يحتوي الكائن Obj على خصائص Pi تحدد حالته. وبالتالي، قد يحتوي كائن مقياس الحرارة على خاصية درجة الحرارة. هذه الخاصية هي أحد جوانب حالة مقياس الحرارة. وقد يكون جانب آخر هو درجة الحرارة القصوى Tmax التي يمكنه تحملها.
قد يحتوي كائن Obj على طرق Mj تسمح للعوامل الخارجية إما:
- تحديد حالته
- تغيير حالته
وبالتالي، فإن مقياس الحرارة الخاص بنا، إذا كان إلكترونيًا، يمكن أن يحتوي على طريقة turnOn لتشغيله، وطريقة أخرى turnOff لإيقاف تشغيله، وطريقة أخرى display لعرض درجة حرارة التوازن بمجرد الوصول إليها. من الناحية البرمجية، الطريقة هي دالة يمكنها قبول المعاملات وإرجاع النتائج.
في VBScript، تُكتب خصائص Pi لكائن Obj على النحو التالي: Obj.Pi، وتُكتب طرق Mj على النحو التالي: Obj.Mj. يُعد كائن wscript في WSH كائنًا مهمًا للطرق التي يتيحها للبرامج النصية. على سبيل المثال، تتيح لك طريقة echo الخاصة به عرض رسالة. وصيغة هذه الطريقة هي كما يلي:
ثم يتم عرض قيم الوسيطات arg1، arg2، ...، argn في نافذة (عند التنفيذ عبر wscript) أو على الشاشة (عند التنفيذ عبر cscript في نظام DOS).
2.5. حاوية Internet Explorer
ذكرنا سابقًا أن Internet Explorer يمكن أن يعمل كحاوية لـ VBScript. دعونا نوضح ذلك بمثال بسيط. فيما يلي صفحة HTML (لغة ترميز النص التشعبي) باسم coucou2.htm لا تحتوي على أي VBScript.
21

يؤدي تحميلها مباشرة في Internet Explorer (ملف/فتح) إلى النتائج التالية:
![]() |
يُظهر محتوى ملف coucou2.htm أن HTML هي لغة ترميز. ومعرفة HTML تعني معرفة هذه العلامات. والغرض الرئيسي منها هو إخبار المتصفح بكيفية عرض المستند. ولا تتبع HTML معيار XML بشكل صارم، ولكنها تشبهه.
في ملف coucou2.htm، توجد معلومتان تم تمييزهما بالرقمين 1 و2. وقد قمنا أيضًا بتضمينهما في العرض النهائي. أدت العلامة <title>...</title> إلى وضع المعلومة 1 في شريط عنوان المتصفح، بينما أدت العلامة <body>..</body> إلى وضع المعلومة 2 في منطقة المستند بالمتصفح.
لن نتعمق أكثر في HTML. دعونا نعدل الملف coucou2.htm بإضافة VBScript ونعيد تسميته إلى coucou1.htm:

تم وضع VBScript داخل العلامات <head>...</head>. كان من الممكن وضعه في مكان آخر. يعرض "hello" عند تحميل الصفحة لأول مرة. هنا، يجب أن يكون المتصفح هو Internet Explorer، حيث أن هذا المتصفح هو الحاوية الافتراضية لـ VBScripts. العرض الناتج هو كما يلي:

يتبع ذلك العرض العادي للصفحة:

كان البرنامج النصي الذي تم تنفيذه كما يلي:
![]()
بينما زودت حاوية WSH البرنامج النصي بكائن يسمى wscript يسمح بالإخراج باستخدام طريقة echo الخاصة به، فإن IE هنا يزود البرنامج النصي بكائن window يسمح بالإخراج باستخدام طريقة alert. وبالتالي، لعرض "hello"، نكتب wscript.echo "hello" في WSH و window.alert "hello" في IE. يمكننا أيضًا أن نوضح هنا أنه، في الواقع، يمكن استخدام لغات متعددة داخل حاوية IE. سنعيد النظر في المثال الذي تم تقديمه بالفعل في WSH ضمن صفحة تسمى hello3.htm:

عندما يقوم IE بتحميل هذه الصفحة، فإنه يعرض أولاً ثلاث نوافذ معلومات:
![]() | ![]() | ![]() |
قبل عرض الصفحة النهائية:

2.6. مساعدة WSH
يأتي WSH مزودًا بنظام مساعدة يقع عادةً في المجلد "C:\Program Files\Microsoft Windows Script\ScriptDocs". بالنسبة للإصدار 5.6 من WSH، يُسمى ملف المساعدة "SCRIPT56.CHM". ما عليك سوى النقر المزدوج على هذا الملف للوصول إلى المساعدة. قد يكون من المفيد إنشاء اختصار له على سطح المكتب.
بمجرد تشغيله، سترى شيئًا مثل هذا:

يحتوي على تعليمات خاصة بحاوية WSH وكذلك بلغات VBScript و JavaScript. وهو أداة لا غنى عنها لكل من المبرمجين المبتدئين وذوي الخبرة. هناك عدة طرق للعمل مع هذه التعليمات:
- لست متأكدًا تمامًا مما تبحث عنه. تريد فقط استكشاف ما هو متاح. في هذه الحالة، يمكنك استخدام علامة التبويب "جدول المحتويات" أعلاه. على سبيل المثال، يمكنك الاطلاع على ما هو متاح لـ VBScript:

ستجد الكثير من المعلومات في تعليمات VBScript غير مدرجة في هذا المستند.
- يمكنك البحث عن شيء محدد، مثل كيفية استخدام دالة MsgBox في VBScript. في هذه الحالة، استخدم علامة التبويب "بحث":

تعرض المساعدة جميع الموضوعات المتعلقة بمصطلح البحث. بشكل عام، تكون الموضوعات الأولى المقترحة هي الأكثر صلة. وهذا هو الحال هنا، حيث الموضوع الأول المقترح هو الموضوع الصحيح. ما عليك سوى النقر عليه مرتين لعرض المعلومات الخاصة بهذا الموضوع:






