Одной из самых популярных программ для разработок схем является 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