Одной из самых популярных программ для разработок схем является vizio, но не все знают, что помимо рисования схем в vizio можно еще и программировать. Вашему вниманию представлю небольшой макрос для vizio, позволяющий двойным кликом по фигуре подключаться к железкам используя протоколы ssh, telnet, http, https.
Начнем с самого простого. Сначала я опишу как создать макрос и назначить его запуск по двойному клику по фигуре в vizio, а затем рассмотрим структуру макроса visio для telnet, ssh, http, https подключения.
Как создать макрос в visio. Запуск макроса по двойному клику мышки
1. Запускаем vizio и создаем файл с поддержкой макросов (расширение у файла будет .vsdm)
2. Переходим в меню "РАЗРАБОТЧИК" / далее "МАКРОСЫ"
3. Вводим имя макроса (например "VisioConnect") / нажимаем кнопку "СОЗДАТЬ" / Вставляем код макроса (см. ниже) / нажимаем "cохранить" (можно использовать Ctrl+S)
4. Создаем фигуру в визио (например коммутатор или сервер) / нажимаем правой кнопкой мышки по фигуре / выбираем "Данные" / далее "Определить данные фигуры..." / нажимаем кнопку "СОЗДАТЬ"
Вводим следующие данные:
подпись: IP_ADDRESS
имя: Row_1
тип: строка
значение: 192.168.1.100 (Ваш ip адрес железки к которой будем подключаться)
Еще раз нажимаем "создать" и вврдим:
подпись: PROTOCOL
имя: Row_2
тип: переменный список
формат:ssh;telnet;http;https
значение: ssh
5. Выбираем фигуру / переходим в меню "РАЗРАБОТЧИК" / далее "Поведение" / переходим на вкладку "Двойной щелчок" / выбираем "Выполнить макрос" (выбираем название своего макроса)
Макрос visio для ssh telnet http https подключения
Ну вот собственно и сам макрос visio. Для удобства понимания я разбил макрос на несколько секций.
Public Sub VisioConnect() '#VARS: Dim VisioShape As Visio.Shape Dim CmdXshellStart Dim WebBrowserStart Dim CmdXshell Dim WebBrowser Dim ShapeData1 As String Dim ShapeData2 As String Dim ShapeIPAddress As String Dim ShapeProtocol As String '#INPUT DATA: ShapeData1 = "Prop.Row_1" '#IPADRESS ShapeData2 = "Prop.Row_2" '#PROTOCOL '#CMD START XSHELL '#xshell -url [protocol://][user[:password]@]host[:port] CmdXshell = "c:\Program Files (x86)\NetSarang\Xshell 6\Xshell.exe" WebBrowser = "RUNDLL32.EXE URL.DLL,FileProtocolHandler" '#START: Set VisioShape = Visio.ActiveWindow.Selection.Item(1) ShapeIPAddress = VisioShape.Cells(ShapeData1).ResultStr("") ShapeProtocol = VisioShape.Cells(ShapeData2).ResultStr("") 'MsgBox (ShapeIP) 'MsgBox (ShapeProtocol) If (ShapeProtocol = "ssh") Or (ShapeProtocol = "telnet") Then CmdXshell = CmdXshell & " -url " & ShapeProtocol & "://" & ShapeIPAddress CmdXshellStart = Shell(CmdXshell, vbNormalFocus) Else WebBrowser = WebBrowser & " " & ShapeProtocol & "://" & ShapeIPAddress WebBrowserStart = Shell(WebBrowser, vbNormalFocus) End If End Sub
В секции "VAR" описываються с помощью оператора DIM типы переменных используемых в данном макросе.
В секции "INPUT DATA" задаются входные параметры. Для подключения по протоколу ssh или telnet будем вызывать программу xshell (можно использовать и другую программу, например putty), а для подключения по http и https вызываем web-браузер. Соответственно в переменную "CmdXshell" записываем путь к программе xshell, в моем случае это "c:\Program Files (x86)\NetSarang\Xshell 6\Xshell.exe", а в переменную "WebBrowser" записываем строку "RUNDLL32.EXE URL.DLL,FileProtocolHandler"
Cекция "START" это основное тело макроса. При запуске макроса в переменные "ShapeIPAddress" и "ShapeProtocol" записываются данные из свойств выбранной фигуры. Далее проверяется условие: Если значение "ShapeProtocol" - ssh или telnet, то запускаем xshell, а если http или https то запускаем web-браузер.
На этом все. Предлагайте свои версии по улучшению данного макроса. Комментируем, подписываемся ну и всем пока:)
Компонент комментариев CComment