System windows forms vbs

VBScript и формы

Простая проверка

Вы можете использовать сценарии VBScript для отправки данных пользователя на сервер. Вы также можете выполнять какие-либо вычисления без отправки данных на сервер.

Ниже приведён простой пример проверки на стороне клиента. На веб-странице расположены поле для ввода текста и кнопка.

В отличие от примера, приведённого в разделе Простая страница с VBScript, здесь свойство Value текстового поля используется для проверки введённого значения. Чтобы получить значение текстового поля, в коде используется ссылка на имя этого поля. То есть в сценарии к этому полю мы обращаемся по полному имени, которое состоит из имени формы и имени элемента управления. Кроме этого в имени ещё используется объект Document, который связан с текущей веб-страницей. В принципе, слово Document в имени можно опустить. Итак, полное имя текстового поля, которое можно использовать для получения содержимого этого элемента, выглядит так: Но чтобы немного сократить это имя, мы сначала получаем ссылку на форму в переменную TheForm и затем уже используем эту переменную. Для того, чтобы получить ссылку на форму, мы используем оператор Set, который связывает форму с переменной TheForm: Пример веб-страницы:

Использование числовых значений

В приведённом выше примере значение проверяется как число. Для этого используется функция IsNumeric, которая возвращает TRUE, если переданный в неё параметр является числом. Если это текст, то возвращается значение FALSE. Таким образом мы выполняем проверку введённых пользователем данных. Если пользователь ошибся и ввёл текст вместо числа, то ему выдаётся сообщение «Пожалуйста введите число».

Несмотря на то, что VBScript автоматически преобразует строки и числа, всегда рекомендуется проверять введённые пользователем данные на предмет принадлежности к тому или иному подтипу и при необходимости использовать функции преобразования.

При выполнении математических операций с введёнными в текстовые поля значениями всегда преобразовывайте эти значения в числовой подтип, потому что оператор + (плюс) может использоваться как для сложения чисел, так и для соединения строк. Например, если в поле Text1 введено 1, а в поле Text2 введено 2, то вы получите следующий результат:

Проверка и отправка данных на сервер

В приведённом выше примере используется обычная кнопка. Если используется кнопка типа Submit, то в этом примере мы бы не увидели данных для проверки, данные ушли бы непосредственно на сервер. Отказ от использования Submit позволит вам проверять данные, но не позволит отправлять данные на сервер. Чтобы решить эту проблему (то есть иметь возможность отправки данных на сервер при использовании обычной кнопки), вам нужно добавить одну строку в код сценария: Отправку данных на сервер выполняет метод Submit объекта Form. После этого сервер обрабатывает данные. Более подробную информацию о методе Submit и других методах вы можете найти в документации Internet Explorer Scripting Object Model. Эту документацию можно найти на сайте Microsoft (http://www.microsoft.com).

Здесь вы увидели только стандартные объекты HTML . Кроме этого Internet Explorer позволяет вам разрабатывать полноценные мощные элементы управления ActiveX (ранее они назывались OLE) и Java объекты.

VBScript: используем классы .NET

Чтобы отправить ответ, вы должны войти или зарегистрироваться

Сообщения 10

1 Тема от The gray Cardinal 2008-02-10 16:22:30

  • The gray Cardinal
  • Участник
  • Неактивен
  • Рейтинг : [ 5 | 0 ]

    Тема: VBScript: используем классы .NET

    Классы .NET могут быть спрограммированы таким образом, что они будут доступны как COM-объекты, надо только их зарегистрировать специальной утилитой. Многие стандартные классы .NET Framework поддерживают такую возможность. Например, командная строка регистрации:

    После этого на VBScript будет работать, например, такой код:

    Этот скрипт сохранит страничку «http://script-coding.com/» в файл «c:\temp\script-coding.htm».

    2 Ответ от The gray Cardinal 2008-02-13 23:59:19

    • The gray Cardinal
    • Участник
    • Неактивен
    • Рейтинг : [ 5 | 0 ]

      Re: VBScript: используем классы .NET

      Решение от Gepard (г. Ставрополь), cборка .NET. Сайт http://forum.d01-soft.ru/.
      Подключение объектов из произвольных сборок .NET.
      Зарегистрируйте подобной командой:

      Затем поместите сборку в кэш сборок подобной командой:

      C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin>gacutil /i c:\temp\ObjectFerm.dll

      В архиве готовая библиотека, исходник, командный файл регистрации, утилита gacutil, примеры.

      ObjectFerm.rar 64.14 kb, 903 downloads since 2008-02-13

      You don’t have the permssions to download the attachments of this post.

      3 Ответ от The gray Cardinal 2008-02-14 23:59:17

      • The gray Cardinal
      • Участник
      • Неактивен
      • Рейтинг : [ 5 | 0 ]

        Re: VBScript: используем классы .NET

        Ещё пример к решению в предыдущем посте. Скрипт опять сохранит страничку «http://script-coding.com/» в файл «c:\temp\script-coding.htm», но уже в случае, если вы находитесь за прокси, требующем авторизации. Этот пример демострирует методы SetParameterCount, SetParameterValue и GetObjectP, которые позволяют работать с объектами, конструкторы которых требуют параметров.

        Есть проблема: объекты, возвращаемые функцией GetObjectP, не совсем корректно работают. Обращение через точку к свойствам объектов, возвращённых GetObjectP, приводит к ошибке «требуется объект» (с объектами, возвращёнными GetObject, этого не происходит). При этом функция TypeName() для первых всегда возвращает «Object», а для вторых — возвращает имя класса. Например, строка

        работать не будет, но работают, как ни странно, такие строки:

        System windows forms vbs

        Модератор: Brickgroup

        Создание форм для VBScript

        ALX_2002 » 05.07.2008 (Сб) 16:09

        Доброго времени суток господа. Не раз натыкался в интернете на вопросы как сделать форму для VBS скрипта. Иногда требуется сделать самое банальное окошко с двумя тремя полями ввода, чтобы не мучать пользователя поочерёдно, вылезающими InputBox-ами, а VBS как назло не даёт никаких средств для отображения обычных форм. Не так давно наткнулся на удобный инструмент для этих целей — HTA (HTML Application). Подробнее об этом можно почитать тут http://www.script-coding.info/HTA.html. В принципе для создания «интерфейса» вполне достаточно было бы использовать HTA как есть, ведь он полноценно выполняет VBS скрипты, но передо мной встала задача показывать формы из среды, выполняющей VBS код. При чём сначала на основании данных встроенных объектов этой среды заполнить форму и отобразить, а затем собрать с неё введённые данные и передать обратно в скрипт. В итоге пришлось искать пути соединения HTA с VBS средой.
        К сожалению объектной модели для загрузки HTA найти не смог. Пришлось создавать свою.

        Принцип работы следующий
        1) Запускается основной скрипт start.vbs
        2) через Wscript.Shell объект запускает форму.
        3) В HTA форме создаётся WebBrowser компонент, который автоматически регистрируется в коллекции Shell Application Windows
        4) Скрипт находит этот объект и через его свойство Container получает доступ к родительским объектам Document и Window.





        Код: Выделить всё
        if IsObject(Window) Then
        Document.write «»
        Document.attachevent «onkeydown»,GetRef(«Document_onkeydown_event»)
        window.attachevent «onload»,GetRef(«onload_event»)
        End if

        Sub onload_event
        CommandLine = Document.all.tags(«APPLICATION»)(0).CommandLine
        Pos = InstrRev(CommandLine,» «)
        CommandLine = mid(CommandLine,Pos + 1,Len(CommandLine)-Pos)
        if CommandLine = «» Then Exit Sub
        WebBrowser.RegisterAsBrowser = True
        WebBrowser.RegisterAsDropTarget = False
        WebBrowser.PutProperty «ProcessID»,Clng(CommandLine)
        End Sub

        Function Document_onkeydown_event
        if window.event.keycode = 116 Then Document_onkeydown_event = false
        End Function

        Код start.vbs
        Код: Выделить всё
        Option Explicit

        Dim WebBrowser,Window, Document, ExitDo

        Set WebBrowser = Load(«form1.hta»)

        Set ShellApplication = CreateObject(«Shell.Application»)

        ShellApplication.BrowseForFolder WebBrowser.GetProperty(«ProcessID»),»Title», 0, 36

        Set Document = WebBrowser.Document
        Set Window = Document.ParentWindow
        Document.body.onunload = GetRef(«window_onunload»)

        Sub GetVars
        MsgBox Window.InputBox1.value & vbCrlf & Window.InputBox2.value & vbCrlf & Window.ComboBox1.value
        window.close
        End Sub

        Sub Window_onunload
        ExitDo = True
        End Sub

        ‘// Цикл ожидания события
        Do
        WScript.Sleep 100
        Loop Until ExitDo

        ‘// Функция запуска HTA

        Function Load(FilePath)
        Set Load = Nothing

        Dim WshShell
        Set WshShell = CreateObject(«Wscript.Shell»)

        Randomize
        ‘// Создаём уникальный ID и передаём в
        * 100000)

        Windows — автоматизация задач с помощью скриптов. Интересные возможности WSH

        Пожалуй, многие знают, что Windows начиная с версии 98 имеет по умолчанию в своем составе Windows Script Host (WSH), который позволяет исполнять скрипты на языках VBScript и JScript, но далеко не каждый хотя бы раз пользовался этой возможностью. В этой статье я приведу примеры полезных сниппетов и скриптов для WSH и попробую убедить вас в том, что вещь это действительно стоящая. Я также расскажу об очень занимательных и полезных возможностях WSH, о которых практически никто не знает, и информацию о которых в интернете найти весьма непросто.

        Для начала немного о языках, поддерживающихся WSH. JScript — это, по сути, JavaScript с несколько измененной объектной моделью (например, в нем нет объекта window, как в браузерах, зато добавлен объект WScript, позволяющий взаимодействовать со средой, в которой исполняется скрипт). VBScript базируется на синтаксисе и возможностях Visual Basic 6 (и, возможно, более ранних версий). Оба языка имеют приблизительно одинаковые возможности. Кроме того, можно установить и другие языки для WSH, например, PerlScript, который, как вы уже догадались, базируется на Perl’е. Для этого следует воспользоваться, например, инсталлятором ActiveState Perl:

        В Windows по умолчанию расширение файла .js ассоциировано с JScript-скриптами, .vbs — с VBScript. При установке PerlScript появляется ассоциация .pls — с PerlScript-скриптами. Скрипты js и vbs можно закодировать с помощью утилиты от Microsoft screnc.exe, получив на выходе файл с расширением .jse или .vbe, соответственно. К сожалению, такое кодирование защитит лишь от неопытных пользователей — множество раскодировщиков можно найти в Google. Кроме того, при закодировании бывают проблемы с русским текстом.

        Еще одной замечательной особенностью WSH является то, что он позволяет комбинировать все установленные в системе скриптовые языки в одном файле с расширением .wsf. Например, VBScript предоставляет функцию, отображающую окошко для ввода текста (InputBox), и она вам очень нужна, но скрипт свой вы пишете на JScript, который такой функцией не располагает. Решается проблема очень просто — создать файл wsf со следующим содержанием:

        Таким же образом можно скомбинировать, например, JScript и PerlScript, если PerlScript у вас установлен:

        Небольшое отступление — расскажу о запуске скриптов для WSH. По двойному клику мышкой они по умолчанию запускаются с помощью программы wscript.exe. В этом случае все вызовы WScript.Echo транслируются в обычные messagebox’ы. Если вы используете скрипт для автоматизации какого-либо процесса, например, сборки какого-либо проекта, и желаете выводить множество сообщений, то следует скрипт запускать с помощью программы cscript.exe, которая обращения к WScript.Echo транслирует в выводы в консоль. Запустить скрипт в консольном варианте можно, создав bat-файл с примерно таким содержимым:

        Можно также кликнуть на файле скрипта и вызвать меню «Open with command prompt».

        Возможно, я кого-то удивлю, если скажу, что из скриптов для WSH можно с легкостью использовать классы .NET! Приведу пример на JScript (js-файл):

        Выполнив этот скрипт, увидим такую форму:

        И все это создано с помощью .NET-классов! Есть, правда, в этом некоторые сложности. Во-первых, я не нашел путей для взаимодействия с делегатами, которые используются при обработке событий в .NET. Во-вторых, не существует способа вызвать через CreateObject конструктор COM-объекта, принимающий параметры (это относится не только к .NET, кстати). В-третьих, по умолчанию в скриптах доступны лишь некоторые .NET-сборки и классы:

        System.Collections.Queue
        System.Collections.Stack
        System.Collections.ArrayList
        System.Collections.SortedList
        System.Collections.Hashtable
        System.IO.StringWriter
        System.IO.MemoryStream
        System.Text.StringBuilder
        System.Random

        С другой стороны, опубликовать .NET-сборку, чтобы она стала доступной через COM-интерфейсы (которые и используются в WSH), совсем несложно. Если вышеприведенный скрипт с Windows Forms у вас не заработал (что, скорее всего, так и есть), наберите в консоли команду:

        либо, если вы пользуетесь 64-битной операционной системой, то

        Эта команда опубликует сборку System.Windows.Forms и она станет доступной через COM-интерфейсы, после чего вы сможете использовать классы из нее в скриптах. К сожалению, не все сборки можно зарегистрировать, а только те, которые имеют аттрибут ComVisible=true (если такой аттрибут у сборки есть, об этом говорится на соответствующих страницах с описанием сборки в MSDN).

        Для отмены регистрации сборки выполните приведенную выше команду с ключом /unregister.

        Что еще следует знать при использовании .NET-сборок? Часто классы в .NET имеют перегруженные функции с одинаковыми именами и разными типами и количеством параметров. Как вызывать их? Ведь переменные в скриптах практически не типизируются! Все очень просто. Например, возьмем класс System.Random. Он уже зарегистрирован по умолчанию и доступен из WSH. Но он имеет три метода с именем Next. Как вызвать нужный? .NET маппит имена одинаковых методов следующим образом: первый с конца в таблице методов имеет имя Next (в данном случае), следующий — Next_2, далее — Next_3. Где увидеть эту таблицу с правильным порядком функций? Например, в ildasm’е:

        Здесь я открыл сборку mscorlib.dll из %WINDIR%\Microsoft.NET\Framework64\v2.0.50727, после чего зашел в неймспейс System и нашел класс Random в нем. Теперь ясно — если мы хотим воспользоваться методом Next, предоставляющим возможность указать минимальное и максимальное значение при генерации рандома, то следует вызвать Next_2 (так как этот метод второй с конца в списке методов Next, смотрите скриншот выше):

        Еще одной из интересных возможностей скриптов для WSH является поддержка drag-drop’а. На файлы .js, .vbs, .jse, .vbe, .wsf можно перетаскивать другие файлы, и их имена будут доступны через WScript.Arguments.

        Итак, подведем итоги. Чем же примечательно написание скриптов на JScript, VBscript или PerlScript? Почему это лучше и проще bat-файлов или PowerShell’а?

        [+] Вы сами выбираете знакомый любимый синтаксис. Предпочитаете JavaScript — пишите на нем, обожаете Visual Basic — тогда VBScript для вас!
        [+] Вы можете комбинировать эти языки в одном скрипте, тем самым дополняя возможности одного языка фичами другого.
        [+] Вам доступны все стандартные особенности выбранного языка. Поддержка выполнения внешних программ, работа с текстовыми и двоичными файлами, регулярные выражения и многое другое прилагается. Поддержка работы с файлами по маске, с сетевыми путями (samba, например) — тоже.
        [+] Вы можете использовать множество зарегистрированных COM-классов.
        [+] Вы можете использовать многие COM-Visible .NET-сборки.
        [+] Вы можете работать с WMI, так как он доступен через COM.
        [+] Имеется полная поддержка Unicode, достаточно сохранить файл как Unicode Little Endian.

        Масса очевиднейших плюсов. На WSH можно писать мощнейшие приложения и скрипты, которые облегчат вам жизнь и сделают какие-то полезные задачи автоматически.

        Сейчас мне остается лишь привести несколько полезных сниппетов, которые пригодятся вам, если вы решите использовать WSH для написания скриптов, производящих автоматическую сборку проектов/парсинг/работу с файлами и т.д. Для примера я буду использовать свой любимый JScript, потому что он имеет наиболее привычный синтаксис и будет понятен большинству из вас. Кроме того, в JScript удобно перехватывать исключения, которые могут быть выброшены функциями COM-классов и объекта WScript, с помощью try-catch. Можно и самим бросать исключения (это штатная возможность языка JavaScript, и, разумеется, она есть в JScript).

        1. Работаем с файловой системой.

        Читайте также:  Windows command processor что это
        Оцените статью
        Param1
        Param2
        Param3