Skip to content

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" على الشاشة:

Image

لنفتح نافذة DOS ونشغله بالتتابع باستخدام wscript و cscript:


DOS>wscript coucou.vbs

Image

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 بشكل حصري تقريبًا. هذا هو الوضع المناسب لما يُسمى بالتطبيقات "الدفعية"، أي التطبيقات التي لا تتطلب تفاعل المستخدم عبر لوحة المفاتيح. لاحظ نقطتين في النتائج السابقة:

  1. افترضنا أن الملفين القابلين للتنفيذ wscript.exe و cscript.exe موجودان كلاهما في "مسار" الجهاز، مما يسمح بتشغيلهما بمجرد كتابة اسميهما. لو لم يكن الأمر كذلك، لكان علينا أن نكتب هنا:
DOS>c:\windows\wscript coucou.vbs
DOS>c:\windows\command\cscript coucou.vbs
  1. لاحظ أن إصدار WSH المستخدم في هذا المثال وفي بقية الوثيقة هو الإصدار 5.6.
  1. ملف مصدر البرنامج النصي له الامتداد .vbs. هذا هو الامتداد الخاص بالبرنامج النصي VBScript؛ أما البرنامج النصي JavaScript فيُشار إليه بالامتداد .js.

يحتوي برنامج cscript على خيارات تشغيل متنوعة، يمكن الاطلاع عليها عن طريق تشغيل cscript بدون معلمات:

DOS>cscript

Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. Tous droits réservés.

Utilisation : CScript scriptname.extension [option...] [arguments...]

Options:
//B         batch : Supprime l'display of script prompts and errors
//D         Activer le débogage
//E:engine  Utiliser le moteur pour l'script execution
//H:CScript Remplace l'default script execution environment by CScript.exe
//H:WScript tRemplace l'default script execution environment via WScript.exe (default)
//I         Mode interactif (par défaut, contraire de l'option //B)
//Job :xxxx    Exécuter une tâche WSF
//Logo      Afficher un logo (default)
//Nologo    Empêcher l'logo display: no banner displayed during runtime
//S         Enregistrer les options de ligne de commande actuelles pour cet utilisateur
//T:nn      Durée d'execution in seconds: maximum time allowed for script execution
//X         Exécuter un script dans le débogueur

تعمل الحجة //nologo على منع عرض شعار WSH:

C:\>cscript //nologo coucou.vbs
coucou

2.3. بنية البرنامج النصي WSH

لقد رأينا للتو أول نص برمجي لنا: hello.vbs

Image

ذكرنا أن امتداد الملف .vbs يشير إلى نص VBScript. هذا ليس شرطًا. كان بإمكاننا وضع النص في ملف بامتداد .wsf بالشكل التالي الأكثر تعقيدًا:

Image

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

C:\>cscript //nologo coucou2.wsf
coucou

يمكن أن يخلط نص WSH بين اللغات:

Image

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

1
2
3
4
C:\>cscript //nologo coucou3.wsf
coucou (vbscript)
coucou (javascript)
coucou (perlscript)

سنلاحظ النقاط التالية:

  1. حاوية WSH غير مرتبطة بلغة معينة. يمكن لبرنامج نصي WSH أن يخلط بين اللغات داخل ملف بامتداد .wsf
  2. ثم يتم تضمين البرنامج النصي بين علامتي <job id="..."> ... </job>
  3. داخل التطبيق (=job)، يتم ترميز اللغات المستخدمة في أقسام الكود المختلفة بـ <script language="...."> .... </script>
  4. هذه اللغة الترميزية لها اسم: 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 الخاصة به عرض رسالة. وصيغة هذه الطريقة هي كما يلي:

wscript.echo arg1, arg2, ..., argn

ثم يتم عرض قيم الوسيطات arg1، arg2، ...، argn في نافذة (عند التنفيذ عبر wscript) أو على الشاشة (عند التنفيذ عبر cscript في نظام DOS).

2.5. حاوية Internet Explorer

ذكرنا سابقًا أن Internet Explorer يمكن أن يعمل كحاوية لـ VBScript. دعونا نوضح ذلك بمثال بسيط. فيما يلي صفحة HTML (لغة ترميز النص التشعبي) باسم coucou2.htm لا تحتوي على أي VBScript.

21

Image

يؤدي تحميلها مباشرة في Internet Explorer (ملف/فتح) إلى النتائج التالية:

يُظهر محتوى ملف coucou2.htm أن HTML هي لغة ترميز. ومعرفة HTML تعني معرفة هذه العلامات. والغرض الرئيسي منها هو إخبار المتصفح بكيفية عرض المستند. ولا تتبع HTML معيار XML بشكل صارم، ولكنها تشبهه.

في ملف coucou2.htm، توجد معلومتان تم تمييزهما بالرقمين 1 و2. وقد قمنا أيضًا بتضمينهما في العرض النهائي. أدت العلامة <title>...</title> إلى وضع المعلومة 1 في شريط عنوان المتصفح، بينما أدت العلامة <body>..</body> إلى وضع المعلومة 2 في منطقة المستند بالمتصفح.

لن نتعمق أكثر في HTML. دعونا نعدل الملف coucou2.htm بإضافة VBScript ونعيد تسميته إلى coucou1.htm:

Image

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

Image

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

Image

كان البرنامج النصي الذي تم تنفيذه كما يلي:

Image

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

Image

عندما يقوم IE بتحميل هذه الصفحة، فإنه يعرض أولاً ثلاث نوافذ معلومات:

قبل عرض الصفحة النهائية:

Image

2.6. مساعدة WSH

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

بمجرد تشغيله، سترى شيئًا مثل هذا:

Image

يحتوي على تعليمات خاصة بحاوية WSH وكذلك بلغات VBScript و JavaScript. وهو أداة لا غنى عنها لكل من المبرمجين المبتدئين وذوي الخبرة. هناك عدة طرق للعمل مع هذه التعليمات:

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

Image

ستجد الكثير من المعلومات في تعليمات VBScript غير مدرجة في هذا المستند.

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

Image

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

Image