crio Публикувано Юли 16, 2007 Report Share Публикувано Юли 16, 2007 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 елемента .. или таблица за морски шах в)Условия Често когато пишем код ни се налага да взимаме различни решения. Затова използваме условните изрази.Във 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) NextDo...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 Loopa = 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 if4.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" и го пуснете... Надявам се да съм ви бил полезен Цитирай Link to comment Сподели другаде More sharing options...
kiril Публикувано Октомври 3, 2007 Report Share Публикувано Октомври 3, 2007 Незнам дали тук е правилното място извинявам се ако не е така Ползвам малко vbscript за разни задачки по обслужване на компютрите в мрежата ни.Искам да попитам, дали сте правили графика по данни чрез vbscript?Целта ми е да визуализирам разни неща под формата на графика.Преди време попаднах на един скрипт който генерира svg, но се указа че с IE на Vista има проблеми ... а и с Firefоx също. Цитирай Link to comment Сподели другаде More sharing options...
crio Публикувано Октомври 3, 2007 Author Report Share Публикувано Октомври 3, 2007 Тъй като VBScript може да ползва ActiveX компоненти, ще е нищо работа да се направи подобен скрипт... при наличието на добър ActiveX контрол Цитирай Link to comment Сподели другаде More sharing options...
x7azy Публикувано Декември 15, 2007 Report Share Публикувано Декември 15, 2007 Много е яко благодаря.Заинтересуван съм от VBS скриптирането почвам да го разучавам. БЛАГОДАРЯ Цитирай Link to comment Сподели другаде More sharing options...
Yang_G Публикувано Януари 6, 2009 Report Share Публикувано Януари 6, 2009 Правя всичко както си е в началото,но когато влвлезна в първия фаил ми изписва Цитирай Link to comment Сподели другаде More sharing options...
Aquarius Публикувано Януари 6, 2009 Report Share Публикувано Януари 6, 2009 Правя всичко както си е в началото,но когато влвлезна в първия фаил ми изписва Ами то това е целта на занятието в първия пример. Програмката "Hello World!" е традиция в програмирането и има за цел да демонстрира създаването и стартирането на най-простото приложение на даден език за програмиране. В случая се използва функцията MsgBox (показване на изходна информация) за извеждане на низа "Здравей, Свят!" в диалогов прозорец, който поздравява потребителя. Цитирай Link to comment Сподели другаде More sharing options...
Yang_G Публикувано Януари 6, 2009 Report Share Публикувано Януари 6, 2009 Ами то това е целта на занятието в първия пример. Програмката "Hello World!" е традиция в програмирането и има за цел да демонстрира създаването и стартирането на най-простото приложение на даден език за програмиране. В случая се използва функцията MsgBox (показване на изходна информация) за извеждане на низа "Здравей, Свят!" в диалогов прозорец, който поздравява потребителя. ДА!Прави сте,ама кой да се сети?Пиша глупости преди да съм помислил .ИЗВИНЯВАМ СЕ!!!. А всекпример работи нали? Защото на мен ми излиза това кога пиша някои от примерите?(ПРОИЗВОЛЕН ПРИМЕР) Цитирай Link to comment Сподели другаде More sharing options...
Aquarius Публикувано Януари 6, 2009 Report Share Публикувано Януари 6, 2009 Разбира се, че работят. Провери си синтаксиса, защото някъде си сложил ")" в повече или пък си пропуснал. Ако мислиш, че ще ти е по-лесно пусни кода в коментара си. Цитирай Link to comment Сподели другаде More sharing options...
Yang_G Публикувано Януари 6, 2009 Report Share Публикувано Януари 6, 2009 А ти да нямаш в предвид,че на някои от местата трябва да си го пиша според моите изисквания на моя компютър. Цитирай Link to comment Сподели другаде More sharing options...
Aquarius Публикувано Януари 6, 2009 Report Share Публикувано Януари 6, 2009 Не, оказа се, че колегата Crio е пропуснал left в проверката, която проверява дали въведеният URL е от типа File Transfer Protocol. За целта просто трябва да добавиш едно left пред (link,6) и скриптът ще заработи. Т.е. ще изглежда така: Dim link link = Inputbox("Please input a url") if left(link,7) = "http://" then Msgbox("HyperText Transfer Protocol") elseif left(link,6) = "ftp://" then MsgBox("File Transfer Protocol") else MsgBox("Unknown Protocol") end if Left() функцията връща определен брой символи от лявата страна на низа. В първия случай 7, а във втория 6. Низът се съхранява в променливата Link в този примерен скрипт. Цитирай Link to comment Сподели другаде More sharing options...
Yang_G Публикувано Януари 6, 2009 Report Share Публикувано Януари 6, 2009 Да, в това беше проблема. Мерси за помощта. Цитирай Link to comment Сподели другаде More sharing options...
Yang_G Публикувано Януари 9, 2009 Report Share Публикувано Януари 9, 2009 А защо не ми стават тези с "Dim",във 2. подточка б)? Цитирай Link to comment Сподели другаде More sharing options...
Aquarius Публикувано Януари 9, 2009 Report Share Публикувано Януари 9, 2009 А защо не ми стават тези с "Dim",във 2. подточка б)? Бих искал да те помоля да си формулираш ясно въпроса. Цитирай Link to comment Сподели другаде More sharing options...
Yang_G Публикувано Януари 10, 2009 Report Share Публикувано Януари 10, 2009 Бих искал да те помоля да си формулираш ясно въпроса. Добре!Защо не работят примерите от ВТОРА ТОЧКА/ПОДТОЧКА Б? Цитирай Link to comment Сподели другаде More sharing options...
crio Публикувано Януари 10, 2009 Author Report Share Публикувано Януари 10, 2009 Не виждам какво очакваш да видиш като потвърждение, че работи. Единствения знак, че НЕ работи този код, ще е съобщение за грешка. В противен случай всичко е добре. Тази точка (2) като цяло има за цел да покаже как работят запазените думи в VBScript т.е. да покаже правописа им. Така, че примерите са по-скоро показни. Цитирай Link to comment Сподели другаде More sharing options...
Препоръчан пост
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.