Skip to content

2. زمینه‌های اجرای VBSCRIPT

2.1. Introduction

یک برنامه vbscript مستقیماً روی ویندوز اجرا نمی‌شود، بلکه در داخل یک کانتینر اجرا می‌شود که یک محیط زمان اجرا و تعدادی شیء اختصاصی را برای آن فراهم می‌کند. علاوه بر این، برنامه VBScript می‌تواند از اشیایی که توسط سیستم ویندوز در اختیار آن قرار می‌گیرند، استفاده کند که به عنوان اشیاء ActiveX شناخته می‌شوند.

در این سند، ما از دو کانtejner استفاده خواهیم کرد: میزبان اسکریپت ویندوز (Windows Scripting Host) که معمولاً با نام WSH شناخته می‌شود، و مرورگر اینترنت اکسپلورر (Internet Explorer) که از این پس گاهی با نام IE ذکر می‌شود. کانtejnerهای بسیاری دیگر نیز وجود دارند. برای مثال، برنامه‌های MS-Office حامل‌هایی برای گونه‌ای از VB هستند که با نام VBA (ویژوال بیسیک برای برنامه‌ها) شناخته می‌شود. همچنین برنامه‌های ویندوزی متعددی وجود دارند که به کاربران خود اجازه می‌دهند با توسعه برنامه‌هایی که درون خود برنامه اجرا می‌شوند و از اشیاء خاص آن استفاده می‌کنند، از محدودیت‌های سیستم فراتر روند.

محلی که برنامه VBScript در آن اجرا می‌شود، نقش کلیدی ایفا می‌کند:

  • ابجکت‌هایی که توسط کانtejنر در اختیار برنامه VBScript قرار می‌گیرند، از کانtejنری به کانtejنر دیگر متفاوت هستند. برای مثال، WSH ابجکتی به نام WScript را در اختیار یک برنامه VBS قرار می‌دهد که دسترسی به، برای مثال، اشتراک‌های شبکه‌ای و چاپگرهای ماشین میزبان را فراهم می‌کند. از سوی دیگر، IE، یک شیء به نام document را در اختیار اسکریپت VBS قرار می‌دهد که نمایانگر کل سند HTML در حال مشاهده است. سپس اسکریپت VBS می‌تواند این سند را دستکاری کند. اکسل، از طرف خود، اشیایی را که نمایانگر دفترکارها، کاربرگ‌ها، نمودارها و غیره هستند—در واقع، تمام اشیایی که توسط اکسل مدیریت می‌شوند—در اختیار برنامه‌ای به نام VBA قرار می‌دهد.
  • در حالی که اشیاء درون یک کانtejنر تمام قدرت را به یک برنامه VBScript می‌بخشند، اما گاهی اوقات می‌توانند برخی از بخش‌های عملکرد آن را محدود کنند. به عنوان مثال، یک برنامه VBScript که در مرورگر IE در حال اجرا است، به دلایل امنیتی نمی‌تواند به هارد دیسک ماشین میزبان دسترسی پیدا کند.

بنابراین، هنگام بحث در مورد برنامه‌نویسی VBScript، لازم است مشخص شود که برنامه در کدام کانtejner اجرا می‌شود.

در ویندوز، VBScript تنها زبانی نیست که می‌توان در محفظه‌های WSH یا IE استفاده کرد. برای مثال، می‌توانید از JScript (=JavaScriptPerlScript (=PerlPython و غیره استفاده کنید. بسیاری از این زبان‌ها در نگاه اول برتر از VBScript به نظر می‌رسند. با این حال، VBScript دارای برخی مزایای قابل توجه است:

  • VB و گونه‌های آن VBSCRIPT و VBA در ماشین‌های ویندوزی بسیار رایج هستند. آشنایی با این زبان ضروری به نظر می‌رسد.
  • قدرت یک برنامه از اشیایی که می‌تواند استفاده کند ناشی می‌شود، نه از زبانی که به کار می‌گیرد. با این حال، بسیاری از این اشیا توسط محیط‌های زمان اجرا (runtime) فراهم می‌شوند، نه خود زبان‌ها.

یکی از معایب VBSCRIPT این است که به سیستم‌های غیر از ویندوز، مانند یونیکس، قابل حمل (portable) نیست. رقبای آن - جاوااسکریپت، پرل و پایتون - قابل حمل هستند. اگر نیاز به کار بر روی سیستم‌های ناهمگون باشد، استفاده از یک زبان واحد در تمام سیستم‌های مختلف ممکن است مزیت داشته باشد یا حتی ضروری باشد.

2.2. کانتینر WSH

کانونر WSH (میزبان اسکریپت ویندوز) به برنامه‌هایی که به زبان‌های مختلف - مانند VBScript، JavaScript، PerlScript و Python - نوشته شده‌اند، اجازه می‌دهد تا در ویندوز اجرا شوند. استانداردی وجود دارد که برای استفاده از یک زبان در WSH باید به آن پایبند بود. هر زبانی که با این استاندارد مطابقت داشته باشد، واجد شرایط اجرای درون WSH است. قابل تصور است که فهرست زبان‌های فوق که در WSH اجرا می‌شوند، گسترش یابد. یک کانتینر، اشیایی را در اختیار برنامه‌هایی که اجرا می‌کند قرار می‌دهد که قدرت واقعی آن‌ها را می‌بخشد. این امر تفاوت‌های بین زبان‌ها را مبهم می‌کند، زیرا همه آن‌ها از یک مجموعه یکسان از اشیاء استفاده می‌کنند. بنابراین، انتخاب یک زبان به جای زبان دیگر ممکن است صرفاً به یک مسئله سلیقه‌ای شخصی بدل شود، نه عملکرد.

یک برنامه در WSH با استفاده از دو فایل اجرایی اجرا می‌شود: wscript.exe و cscript.exe. فایل wscript.exe معمولاً در پوشه نصب ویندوز قرار دارد که معمولاً %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 مخفف console است. یک اسکریپت را می‌توان با استفاده از wscript یا cscript اجرا کرد. تفاوت در نحوه نمایش پیام‌ها روی صفحه است:

  • wscript آن‌ها را در یک پنجره نمایش می‌دهد
  • cscript آن‌ها را روی صفحه نمایش می‌دهد

در اینجا یک اسکریپت به نام coucou.vbs وجود دارد که coucou را روی صفحه نمایش می‌دهد:

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 استفاده خواهیم کرد. این حالت برای برنامه‌های موسوم به «بatch» مناسب است، یعنی برنامه‌هایی که بدون تعامل کاربر از طریق صفحه‌کلید اجرا می‌شوند. دو نکته در نتایج قبلی باید مورد توجه قرار گیرد:

  1. ما فرض کردیم که فایل‌های اجرایی wscript.exe و cscript.exe هر دو در دایرکتوری «PATH» ماشین قرار داشتند، که این امکان را می‌دهد تا آن‌ها را صرفاً با تایپ نامشان اجرا کنیم. اگر این‌طور نبود، باید اینجا می‌نوشتیم:
DOS>c:\windows\wscript coucou.vbs
DOS>c:\windows\command\cscript coucou.vbs
  1. توجه داشته باشید که نسخه‌ای از wsh که در این مثال و در سراسر بقیهٔ سند استفاده شده، نسخهٔ ۵.۶ است.
  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: نمایش درخواست‌ها و خطاهای اسکریپت را سرکوب می‌کند
//D          اشکال‌زدایی را فعال می‌کند
//E:engine  از موتور برای اجرای اسکریپت استفاده کنید
//H:CScript محیط اجرای پیش‌فرض اسکریپت را با CScript.exe جایگزین می‌کند
//H:WScript tRemplace محیط اجرای پیش‌فرض اسکریپت را با WScript.exe (پیش‌فرض) جایگزین می‌کند
//I          حالت تعاملی (پیش‌فرض، برعکس گزینه //B) 
//Job:xxxx     اجرای یک وظیفه WSF
//لوگو       نمایش لوگو (پیش‌فرض)
//Nologo     جلوگیری از نمایش لوگو: هیچ بنری در حین اجرای وظیفه نمایش داده نمی‌شود
//S          ذخیرهٔ گزینه‌های خط فرمان فعلی برای این کاربر
//T:nn       زمان اجرا به ثانیه: حداکثر  زمان مجاز برای اجرای یک اسکریپت
//X          اجرای یک اسکریپت در عیب‌یاب

آرگومان //nologo نمایش بنر wsh را سرکوب می‌کند:

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

2.3. قالب یک اسکریپت WSH

ما همین‌اکنون به یک اسکریپت اولیه نگاه کردیم: coucou.vbs

Image

ما نشان داده‌ایم که پسوند فایل .vbs به اسکریپتی به نام vbscript اشاره دارد. این الزامی نیست. می‌توانستیم اسکریپت را در فایلی با پسوند .wsf در شکل زیر، پیچیده‌تر قرار دهیم:

Image

اجرای این اسکریپت خروجی زیر را تولید می‌کند:

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

یک اسکریپت با نام WSH می‌تواند زبان‌ها را با هم ترکیب کند:

Image

اجرای این اسکریپت خروجی زیر را تولید می‌کند:

1
2
3
4
C:\>cscript //بدون لوگو coucou3.wsf
coucou (vbscript)
coucou (javascript)
coucou (perlscript)

ما نکات زیر را یادداشت می‌کنیم:

  1. کانتینر WSH با هیچ زبان خاصی مرتبط نیست. یک اسکریپت WSH می‌تواند زبان‌ها را در داخل یک فایل با پسوند .wsf با هم ترکیب کند.
  2. سپس اسکریپت در میان تگ‌های <job id="..."> ... </job> قرار می‌گیرد.
  3. در داخل برنامه (=job)، زبان‌های مورد استفاده در بخش‌های مختلف کد با استفاده از برچسب‌های <script language="...."> .... </script> مشخص می‌شوند.
  4. این زبان نشانه‌گذاری نامی دارد: XML، که مخفف زبان نشانه‌گذاری eXtended است. XML هیچ تگی را تعریف نمی‌کند، بلکه قوانینی برای چیدمان تگ‌ها ارائه می‌دهد. بنابراین باید در اینجا بیان کنیم که زبان نشانه‌گذاری مورد استفاده در یک اسکریپت WSH از استاندارد XML پیروی می‌کند.

پس از آن، ما به طور انحصاری از VBScript در فایل‌های .vbs استفاده خواهیم کرد.

2.4. شیء WSCRIPT

کانتینر WSH شیئی به نام wscript را در اختیار اسکریپت‌هایی که اجرا می‌کند قرار می‌دهد. یک شیء دارای ویژگی‌ها و متدها است:

یک شیء Obj دارای ویژگی‌های Pi است که وضعیت آن را تعیین می‌کنند. بنابراین، یک شیء thermomètre ممکن است یک ویژگی température داشته باشد. این ویژگی یکی از جنبه‌های وضعیت دماسنج است. یکی دیگر می‌تواند حداکثر دمایی باشد که Tmax می‌تواند تحمل کند.

شیء Obj ممکن است متدهایی Mj داشته باشد که به عوامل خارجی اجازه می‌دهد تا:

  • تعیین وضعیت آن
  • وضعیت آن را تغییر دهند

بنابراین، دماسنج ما، اگر الکترونیکی باشد، می‌تواند یک متد allumer برای روشن کردن، یک متد دیگر éteindre برای خاموش کردن، و یک متد دیگر afficher برای نمایش دمای تعادل پس از رسیدن به آن داشته باشد. در اصطلاحات برنامه‌نویسی، یک متد تابعی است که می‌تواند آرگومان بپذیرد و نتیجه‌ای را بازگرداند.

در VBScript، ویژگی‌های Pi یک شیء Obj با Obj.Pi و متدهای Mj با Obj.Mj نشان داده می‌شوند. شیء wscript در WSH یک شیء مهم است به دلیل متدهایی که در اختیار اسکریپت‌ها قرار می‌دهد. برای مثال، متد echo آن امکان نمایش یک پیام را فراهم می‌کند. نحو این متد به شرح زیر است:

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

مقادیر آرگومان‌های argi سپس در یک پنجره (هنگام اجرا از طریق wscript) یا روی صفحه (هنگام اجرا از طریق cscript تحت DOS) نمایش داده می‌شوند.

2.5. کانون اینترنت اکسپلورر

قبلاً اشاره کردیم که Internet Explorer می‌تواند به‌عنوان یک کانتینر برای VBScript عمل کند. بیایید این را با یک مثال ساده نشان دهیم. در زیر یک صفحه HTML (زبان نشانه‌گذاری HyperText) به نام coucou2.htm وجود دارد که هیچ VBScript در آن وجود ندارد.

21

Image

بارگذاری مستقیم آن در اینترنت اکسپلورر (Fichier/Ouvrir) نتایج زیر را به همراه دارد:

محتویات فایل coucou2.htm به ما نشان می‌دهد که HTML یک زبان نشانه‌گذاری است. برای درک زبان HTML باید این تگ‌ها را بشناسیم. هدف اصلی آن‌ها اطلاع‌رسانی به مرورگر درباره نحوه نمایش یک سند است. HTML به‌طور دقیق از استاندارد XML پیروی نمی‌کند، اما به آن نزدیک است.

در coucou2.htm، دو مورد اطلاعات برای نمایش وجود دارد که با برچسب‌های 1 و 2 مشخص شده‌اند. ما همچنین آن‌ها را در خروجی نهایی نمایش داده‌ایم. برچسب <title>...</title> باعث شد که قطعه اطلاعات شماره ۱ در نوار عنوان مرورگر قرار گیرد، و برچسب <body>..</body> باعث شد که قطعه اطلاعات شماره ۲ در ناحیه اصلی محتوای مرورگر قرار گیرد.

ما وارد جزئیات بیشتری در مورد زبان HTML نخواهیم شد. بیایید فایل coucou2.htm را با درج یک VBScript اصلاح کرده و نام آن را به coucou1.htm تغییر دهیم:

Image

VBScript در تگ <head>...</head> قرار داده شده است. می‌توانست در جای دیگری نیز قرار داده شود. این کد هنگام بارگذاری اولیه صفحه، «hello» را نمایش می‌دهد. در اینجا، مرورگر باید Internet Explorer باشد، زیرا تنها این مرورگر به طور پیش‌فرض به عنوان یک کانتینر برای VBScriptها عمل می‌کند. خروجی حاصل به شرح زیر است:

Image

که به دنبال آن نمایش عادی صفحه می‌آید:

Image

اسکریپت اجرا شده به شرح زیر بود:

Image

در حالی که کانتینر WSH یک شیء به نام wscript را در اختیار اسکریپت قرار داد، که به آن امکان می‌داد با استفاده از متد echo خود محتوا را رندر کند، در اینجا، IE یک شیء به نام window را در اختیار اسکریپت قرار می‌دهد که به آن اجازه می‌دهد با استفاده از متد alert محتوا را نمایش دهد. بنابراین، برای نمایش «hello»، عبارت wscript.echo «hello» در WSH و window.alert «hello» در IE نوشته می‌شود. ما همچنین می‌توانیم در اینجا نشان دهیم که در واقع امکان استفاده از چندین زبان در داخل کانتینر IE وجود دارد. بیایید نگاهی دوباره به مثالی که قبلاً در WSH در یک صفحه coucou3.htm ارائه شده است، بیندازیم:

Image

وقتی این صفحه توسط IE بارگذاری می‌شود، سه پنجره اطلاعاتی در ابتدا نمایش داده می‌شوند:

قبل از نمایش صفحه نهایی:

Image

2.6. راهنمای WSH

WSH دارای یک سیستم راهنما است که معمولاً در پوشه «C:\Program Files\Microsoft Windows Script\ScriptDocs» قرار دارد. برای نسخه 5.6 از WSH، فایل راهنما با نام «SCRIPT56.CHM» است. برای دسترسی به راهنما کافی است روی این فایل دوبار کلیک کنید. داشتن یک میانبر از آن روی دسکتاپ می‌تواند مفید باشد.

پس از راه‌اندازی، چیزی شبیه به این خواهید دید:

Image

این فایل حاوی راهنمای کانتینر WSH و همچنین راهنمای VBScript و JavaScript است. این یک ابزار ضروری برای برنامه‌نویسان مبتدی و باتجربه است. راه‌های مختلفی برای کار با این راهنما وجود دارد:

  • شما کاملاً مطمئن نیستید که به دنبال چه چیزی هستید. شما صرفاً می‌خواهید آنچه ارائه می‌شود را بررسی کنید. در این صورت می‌توانید از زبانه Sommaire بالا استفاده کنید. برای مثال، می‌توانید ببینید برای VBScript چه چیزهایی در دسترس است:

Image

در راهنمای VBscript اطلاعات زیادی وجود دارد که در این سند گنجانده نشده است.

  • می‌توانید به دنبال مورد خاصی بگردید، مانند نحوه استفاده از تابع msgbox در VBscript. در این صورت، از برگه Rechercher استفاده کنید:

Image

توابع راهنما تمام موضوعات مرتبط با عبارت جستجو را بازمی‌گرداند. به طور کلی، اولین موضوعات پیشنهادی مرتبط‌ترین هستند. در اینجا نیز همین‌طور است، جایی که اولین موضوع پیشنهادی موضوع صحیح است. برای مشاهده اطلاعات آن موضوع، کافی است روی آن دوبار کلیک کنید:

Image