Quantcast
Viewing all articles
Browse latest Browse all 5785

VBScript за начинаещи

1. Какво е VBScript

VBScript е съкращението на Visual Basic Scripting Edition. Това е скриптов език разработван от Microsoft който е вариант на техния Visual Basic език за програмиране. По подразбиране той е инсталиран във всеки Windows от Windows 98 насам. Когато VBScript е използван в Microsoft Internet Explorer, вграден в някой уеб документ той много прилича (по функционалност) на JavaScript. Тъй като другите браузър-и като Opera и Mozilla Firefox нямат вградена поддръжка на VBScript повечето уеб разработчици използват JavaScript (JScript в Internet Explorer). Като оставим уеб перспективите пред VBScript , чрез него лесно могат да бъдат създавани програмки които да се изпълняват на потребителският компютър. В тази статия аз ще ви покажа как лесно се правят такъв тип програмки, или така наречените HTML Applications (*.hta). Но първо мисля да ви обясня най-важните неща за VBScript.

2. Въведение в VBScript

а) Hello, VBScript!

Да започнем с класическото "Hello, World!" :

MsgBox("Hello, World!")
Сега запазете кода в файл с окончание ".vbs" и стартирайте файлът.

б)Променливи

Променливите се използват за да можете да пазите нужната ви информация в тях. Те могат да бъдат използвани за взимането на информацията запазена в тях,

или за променянето и. В VBScript всички променливи са от типа "Вариант" и могат да съдържат всякакъв вид информация.

Правила за променливите :
* Могат да започват само с буква!
* Имената могат да съдържат само числа и букви!
* Името им неможе да бъде по дълго от 255 знака!


Променливите в VBScript се декларират чрез запазените думи Dim, Public, Private ... например:

Dim var
Присвояването на стойност към променлива става посредством знака за равенство "=" ... например:

name = "Milen"
i = 1
Масиви

Когато искате да запазите повече от една стойност в една променлива вие лесно може да използвате масив. Масивът се декларира като след името на

променливата добавите броят на елементите които съдържа затворени в скоби... например :

Dim city(3)
city(0) = "New York"
city(1) = "London"
city(2) = "Paris"
city(3) = "Tokyo"
Горният код декларира масив с четири елемента. Четири са защото всеки масив започва от нула, а не от едно.

Можете да създавате и масиви с повече от един масив в тях, добавяте още като като ги разделяте с запетаи... например:

Dim MorskiShah(2,2)
Това прави масив с 3 редици с по 3 елемента .. или таблица за морски шах Image may be NSFW.
Clik here to view.
:P


в)Условия

Често когато пишем код ни се налага да взимаме различни решения. Затова използваме условните изрази.
Във VBScript използваме следните знаци :

Правопис:
If <условие> Then
	<код>
End if
Пример:
If a=1 Then
	Msgbox("A equals 1")
End if
Този код проверява дали стойноста на променливата "а" е равна на 1...

Друг оператор който използваме е оператора else, кодът след него бива изпълняван само ако предните условия не са верни.

Правопис:
If <условие> Then
	<код>
Else
	<код>
End if
Пример:
If a = 1 Then
	Msgbox("A equals 1")
Else
	Msgbox("A is different from 1")
End If
Кодът след else ще бъде изпълнен само ако стойноста на променливата "a" е различна от 1.

Друг много полезен оператор е ElseIf, когато искате да изберете една от много възможности.

Правопис:
If <условие> Then
	<код>
ElseIf <условие>Then
	<код>
Else
	<код>
End if
Пример:
If a = 1 Then
	Msgbox("A equals 1")
Elseif a = 2 then
	Msgbox("A equals 2")
Else
	Msgbox("A is different from 1 and 2")
End If
Бележка: Можете да имате колкото искате Elseif оператора, но ако броят им е доста голям е по удобно да използвате следващия оператор (поне според мен).

Правопис:
Select Case <променлива>
Case <стойност>:
	<код>
Case <стойност>:
	<код>
Case Else:
	<код>
End Select
Пример:

Select Case Name
Case "Milen":
	Msgbox("Your Name is Milen")
Case "Todor":
	Msgbox("Your Name is Todor")
Case Else:
	Msgbox("I've never seen you before")
End Select
Надявам се условните оператори да са ви станали ясни.

г) Цикли

Често когато пишете програма ви се налага част от кодът ви да се изпълни няколко пъти. Естествено можете да го копирате желания брой пъти, но всепак това е

доста неудобно. Затова използваме цикличните оператори. В VBScript те са 3:

* Операторът For...Next - изпълнява кода определен брой пъти
* Операторът For Each...Next - Изпълнява кода за всеки обект в дадена колекция такива, или за всеки елемент от масив.
* Do While/Until...Loop statement - Кодът се повтаря докато дадено условие е вярно, или докато то не стане вярно (Чрез While).
* Също така можете да използвате While...Wend но той не е препоръчителен за използване, затова няма да го включвам в обясненията.

For...Next
Този оператор се използва когато искате кодът ви да се изпълнява определен от вас брой пъти.

Правопис:
For <променлива> = <стойност> to <стойност>
	<код>
Next
Пример:
For a = 1 to 10
	b = b + a
Next
Този код добавя всяка нова стойност на "а" към "b".

For Each...Next
Изпълнява кода за всеки обект в дадена колекция такива, или за всеки елемент от масив.

Правопис:
For Each <променлива> in <масив>
	<код>
Next
Пример:
Dim Name
Dim Friends(2)
Friends(0) = "VBScript"
Friends(1) = "Crio"
Friends(2) = "God"

For Each Name in Friends()
MsgBox("I have a friend named " & Name)
Next
Do...Loop
Понякога незнаем колко пъти ще ни се наложи да повторим кода и тогава използваме този оператор. При него кодът се изпълнява само докато условието е вярно,

или докато не стане вярно.
Повтаряне на кода докато той е верен
Тогава използваме "Do While...Loop"

Правопис:
Do While <условие>
	  <код>
Loop
Пример:
Dim i
i = 1
Do While i < 10
Msgbox("i is smaller than 10")
i = i + 1
Loop
MsgBox("i equals to 10...")
Този код проверява дали променливата "i" e по-малка от 10, ако е по-малка кодът съобщава за това и я увеличава с 1. Ако променливата е равна на 10 кодът

съобщава за това.

Повтаряне на кода докато той не стане верен
Тогава използваме "Do Until...Loop"

Правопис:
При този вариант ако условието не е вярно кодът в цикъл-а никога няма да бъде изпълнен:
Do Until <условие>
	<код>
Loop
При този вариант кодът бива изпълнен поне един път докато бъде проверена верноста на условието:
Do
	<код>
Loop Until <условие>
Примери:
Do Until a = 10
Msgbox(a)
a = a + 1
Loop
a = 10
Do
Msgbox("A isn't equal to 10")
Loop Until a = 10
Msgbox("A equals 10")
Излизане от Do Цикъл:

Пример:
Do Until a = 100
a = a + 1
If a = 10 Exit Do
Loop
Е .. това е най-важното според мен. Всичко друго се учи с времето.

3. Примерни Скриптове

а) Прост Скрипт:
В скрипта се използват:
InputBox - Това е диалог в който се въвежда текст който използваме в скрипта си.
' - с този знак се започва коментар
Dim FirstName,SecondName,ThirdName
FirstName = InputBox("What is your first name?")
SecondName = InputBox("What is your second name?")
ThirdName = InputBox("What is your third name?")
MsgBox(FirstName & " " & SecondName & " " & ThirdName)
б) Скрипт
Прост скрипт който проверява написан линк и казва какъв тип е той.
В скрипта се използват:
Left() - оператор който проверява дали даден брой букви от избран текст съвпадат с желаните от вас.
Dim link
link = Inputbox("Please input a url")
if left(link,7) = "http://" then
Msgbox("HyperText Transfer Protocol")
elseif(link,6) = "ftp://" then
MsgBox("File Transfer Protocol")
else
MsgBox("Unknown Protocol")
end if
в) Скрипт за напреднали
Сваляне на клипче от ZAZZ.BG (до скоро познат като vbox7.com)
Dim link,tmp,flv
link = InputBox("Моля напишете линк от ZAZZ.BG")
If left(link,20) = "http://zazz.bg/play:" and len(link) >= 28 or left(link,24) = "http://www.zazz.bg/play:" and len(link) >= 32 then
tmp = Mid(link,instr(link,"play:")+5,8)
flv = "http://media.zazz.bg/s/" & left(tmp,2) & "/" & tmp & ".flv"
MsgBox("Линкът към flv файлът е " & flv)
else
MsgBox("Невалиден Линк"
end if
4.HTML Application
Това вече е истинско програмиране, комбинирано с HTML+CSS.
Сега ще ви покажа как да напишете програма която да ви показва кои програми се стартирват автоматично при пускането на компютъра ви.
Нека започнем.

Отворете Notepad.exe.

Ето началото на програмата.. чист HTML и малко CSS...
<html>
<head>
<title>Crio</title>
<style>
td{border-style: none;}
table{border-style:none;background-color:#FFFFFF}
tr.top{color:#FFFFFF;background-color:#444444;}
tr.content{color:#222222;background-color:#999999;}
</style>
</head>
<body bgcolor="#00" text="#AAAAAA">
Сега нека включим и vbscript-a в кода.

<script type="text/vbscript">
Нека сега добавим няколко константи за регистрите.
Const HKEY_LOCAL_MACHINE = &H80000002
Const HKEY_CLASSES_ROOT = &H80000000
Const HKEY_CURRENT_CONFIG = &H80000005
Const HKEY_CURRENT_USER = &H80000001
Const HKEY_USERS = &H80000003
Същност на нас ще ни трябвa само HKEY_LOCAL_MACHINE но и другите биха ви били полезни,ако решите да правите подобна програмка.

Нека декларираме променливите които ще използваме:
Dim Computer,KeyPath,val,Reg,ValueNames,ValueTypes
Сега да присвоим името на компютър-а с чиито регистри ще боравим, "." е нашият компютър:
Computer = "."
Сега да присвоим пътя в регистрите от който ще намерим обектите които се стартират.
KeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"
Сега да създадем обекта чрез който ще вземем броя и имената на стойностите в ключа (KeyPath) от регистрите, и самите стойности...
Set Reg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & Computer & "\root\default:StdRegProv")
А сега да вземем броя и имената на стойностите..
Reg.EnumValues HKEY_LOCAL_MACHINE, KeyPath, ValueNames, ValueTypes
Сега трябва да добавим малко HTML код за да има програмката приятна Визия...
document.write("<b>Registry Startup</b>:")
document.write("<table border=1><tr align=center class=top><td>Име</td><td width=100>Тип</td><td>Стойност</td></tr>")
Сега да отворим един цикъл и да обходим всяка стойност от дадения "ключ" :
For i=0 To UBound(ValueNames)
Сега нека добавим още малко HTML код:
document.write("<tr class=content>")
document.write("<td align=center>" & ValueNames(i) & "</td>")
Сега нека вземем стойностите :
Reg.GetStringValue HKEY_LOCAL_MACHINE,KeyPath,valueNames(i),val
Сега още малко HTML код заедно с стойностите и краят на цикъла:

document.write("<td>" & val & "</td>")
	document.Write("</tr>")
Next
	document.write("</table>")
И сега да вземем всички програми които се стартират от папката "Startup"

Малко HTML:
document.write("<center><b>Normal Startup:</b>")
 document.write("<table border=1><tr align=center class=top><td>Име</td></tr>")
Сега нека създадем обекта чрез който ще вземем файловете от папката.
Set Shell = CreateObject("Shell.Application")
Да присвоим на една променлива пътят към папката.
Set Folder = Shell.Namespace(&H7&)
A сега да присвоим на друга променлива файловете в папката.
Set Items = Folder.Items
Нека сега с един цикъл да обходим файловете и ги запишем.
For Each FolderItem in Items
	document.write("<tr class=content><td>" & FolderItem.Name & "</td></tr>")
Next
Сега да завършим HTML кода както и програмката.
document.write("</table>")
document.write("<p align=center>Автор : Милен Иванов (Crio)<br/><a href='http://www.softvisia.com'>www.SoftVisia.com</a></center>")
</script>
</html>
Сега запазете файлът с разширение ".hta" и го пуснете...

Надявам се да съм ви бил полезен Image may be NSFW.
Clik here to view.
:peace:

Viewing all articles
Browse latest Browse all 5785


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>