Тема: VBS: Разновидности графических окон
Можно ли создать через VBS окно с графическим вариантом выбора для input box, popup, Echo, msgbox? Я имею ввиду, не обычный вид окна, а, например, окно с какой-нибудь картинкой или?...
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Серый форум → Общение → Windows Script Host, HTA (VBScript, JScript) → VBS: Разновидности графических окон
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Можно ли создать через VBS окно с графическим вариантом выбора для input box, popup, Echo, msgbox? Я имею ввиду, не обычный вид окна, а, например, окно с какой-нибудь картинкой или?...
А зачем? В принципе — можно даже целый диалог нарисовать. Делается сие обычно в HTA, как правило, только от большой нужды.
Ещё можно воспользоваться KiXforms, примеры интерфейсов со скриншотами есть в конце этой статьи, правда, не на языке VBScript (однако, "перевести" будет очень легко).
Примерчик можно? Например, есть маленькая программа. И там я хочу сделать окно с вариантом выбора: Запуск Regedit, Запуск TaskMgr, Запуск CMD. Возможен ли такой вариант выбора?
<HTML>
<HEAD>
<TITLE>Sample Application</TITLE>
<META charset="windows-1251">
<META http-equiv="Content-Type" content="text/html; charset=windows-1251">
<META http-equiv="Content-Language" content="ru">
<HTA:APPLICATION
ID="myApp"
APPLICATIONNAME="myApp"
BORDER="thick"
BORDERSTYLE="normal"
CAPTION="yes"
ICON=""
MAXIMIZEBUTTON="no"
MINIMIZEBUTTON="yes"
SHOWINTASKBAR="yes"
SINGLEINSTANCE="yes"
SYSMENU="yes"
VERSION="1.0"
WINDOWSTATE="normal"
>
</HTA:APPLICATION>
<STYLE type="text/css">
BODY {
font: x-small Verdana, Arial, sans-serif;
color: WindowText;
background-color: ButtonFace;
padding: 0.5em;
margin: 0em;
}
.NoMarginsNoPads {
padding: 0em;
margin: 0em;
}
</STYLE>
<SCRIPT language="VBScript">
Option Explicit
Sub RunSelectedApplication()
Dim objWshShell
Set objWshShell = CreateObject("WScript.Shell")
objWshShell.Run """" & tagSelectApplication.value & """"
Set objWshShell = Nothing
End Sub
</SCRIPT>
</HEAD>
<BODY id="tagBody" scroll="auto">
<SELECT class="NoMarginsNoPads" size="1" id="tagSelectApplication">
<OPTION VALUE="regedit.exe">Редактор реестра
<OPTION VALUE="taskmgr.exe">Диспетчер задач
<OPTION VALUE="cmd.exe" SELECTED>Командный процессор
</SELECT>
<INPUT type="button" class="NoMarginsNoPads" value="Запустить" id="tagRunSelectedApplication" onclick="RunSelectedApplication()">
</BODY>
<SCRIPT language="VBScript">
'Позиционирование и изменение размера окна
With window
.resizeTo _
tagSelectApplication.scrollWidth + tagRunSelectedApplication.scrollWidth + 78, _
tagBody.scrollHeight + 32
.moveTo _
(.screen.availWidth - tagBody.offsetWidth) \ 2, _
(.screen.availHeight - tagBody.offsetHeight) \ 2
End With
</SCRIPT>
</HTML>
Я не это имел ввиду. Это идет как html, а я под VBS хочу узнать.(:
Это и есть «под VBS». И идёт не как .html, а как .hta (есть существенная разница в исполняющем хосте и, главное, в ограничениях безопасности). Сам хост Windows Script Host не имеет средств организации графического интерфейса (ну, почти ). Так что, каким боком не крути — либо работаете под других хостом, либо берёте и прикручиваете библиотеку, которая сие будет реализовывать.
Алексей(или Алексий), то есть графику на VBS не построишь?:( Я думал, там можно как-то прикрепить картинку или анимацию...
Алексей(или Алексий), то есть графику на VBS не построишь?:( Я думал, там можно как-то прикрепить картинку или анимацию...
На чистом VBS не построишь, ну и что?
P.S. При обращениях лучше всегда используй оригинальные ники (в данном случае: alexii), просто копируя их, т.к. они могут читаться не так и обозначать совсем не то, что кажется на первый взгляд .
Алексей(или Алексий), то есть графику на VBS не построишь?
Ну, я вчера крутил предложенную Мастером библиотеку KiXForms под WSH — там вроде как можно рисовать графику прямо по форме (во всяком случае, точки-линии точно есть).
…т.к. они могут читаться не так и обозначать совсем не то, что кажется на первый взгляд smile.
Ага !
…т.к. они могут читаться не так и обозначать совсем не то, что кажется на первый взгляд.
ОК.
Ну, я вчера крутил предложенную Мастером библиотеку KiXForms под WSH — там вроде как можно рисовать графику прямо по форме (во всяком случае, точки-линии точно есть).
А вот код можешь выложить? Например, напиши какой-нибудь маленький скриптик и сделай для него графическое окошко.
Хорошо, ближе к ночи выложу.
Например, так:
Option Explicit
Dim objKiXSystem
Dim objKiXForm
Dim objPictureBox
Dim objButtonDraw
Dim objButtonQuit
Dim strEvent
Dim boolDone
Set objKiXSystem = WScript.CreateObject("Kixtart.System")
boolDone = False
Set objKiXForm = objKiXSystem.Form()
With objKiXForm
.Width = objKiXSystem.Screen.WorkingArea.Width \ 2
.Height = objKiXSystem.Screen.WorkingArea.Height \ 2
.Center
.Text = "Draw demo"
.FormBorderStyle = 4
.Icon = objKiXSystem.BuiltinIcons(53)
.Menu = objKiXSystem.MainMenu()
With .Menu
.Style = 1
.ImageList = objKiXSystem.BuiltinImageList
.FileMenu = .MenuItems.Add("&File")
With .FileMenu
With .MenuItems.Add("&Draw...")
.OnClick = "Draw()"
.ImageIndex = 53
End With
.MenuItems.Add("-")
With .MenuItems.Add("&Quit")
.OnClick = "Quit()"
.ImageIndex = 70
End With
End With
End With
Set objButtonDraw = .Controls.Add("Button")
With objButtonDraw
.Text = "&Draw..."
.Left = objKiXForm.ClientWidth - (.Width + 5)
.Top = objKiXForm.ClientHeight - (.Height + 5) * 2
.Anchor = 2 + 8
.OnClick = "Draw()"
End With
Set objButtonQuit = .Controls.Add("Button")
With objButtonQuit
.Text = "&Quit"
.Left = objKiXForm.ClientWidth - (.Width + 5)
.Top = objKiXForm.ClientHeight - (.Height + 5)
.Anchor = 2 + 8
.OnClick = "Quit()"
End With
Set objPictureBox = .Controls.Add("PictureBox")
With objPictureBox
.Left = 5
.Right = objKiXForm.ClientWidth - (5 + objButtonQuit.Width + 5)
.Top = 5
.Bottom = objKiXForm.ClientHeight - 5
.SizeMode = 1
.Anchor = 1 + 2 + 4 + 8
.OnClick = "DrawImage()"
End With
.Show()
Do While Not boolDone And .Visible
strEvent = .DoEvents(True)
If strEvent <> "" Then
Execute(strEvent)
End If
WScript.Sleep 100
Loop
End With
Set objButtonQuit = Nothing
Set objButtonDraw = Nothing
Set objPictureBox = Nothing
Set objKiXForm = Nothing
Set objKiXSystem = Nothing
WScript.Quit 0
'=============================================================================
'=============================================================================
Sub Draw()
Randomize Timer
Dim lngColor
Dim s, z, sngAspect, x
lngColor = Rnd() * &HFFFFFF
' Можно рисовать и непосредственно на форме objKiXForm
' но удобнее именно на PictureBox
With objPictureBox
s = .ClientHeight * 60 \ .ClientWidth
For z = -3 To 2 Step .05
sngAspect = .707 * z
For x = -3 To 3 Step .05
.PSet _
25 + ((z^2 + x * x) * 0.5 + sngAspect) * s, _
.ClientHeight \ 2 + 20 + s * (x + sngAspect), lngColor
Next
Next
End With
End Sub
'=============================================================================
'===========================================================================
Sub DrawImage()
With objPictureBox
.Image = "C:\Documents and Settings\All Users\Документы\Мои рисунки\Образцы рисунков\Зима.jpg"
.Refresh
End With
End Sub
'=============================================================================
'===========================================================================
Sub Quit()
boolDone = True
End Sub
'=============================================================================
Могу также выложить просто пример по основным типам элементов управления (меню, панель инструментов [как-то криво она там реализована], обычные элементы управления [в качестве образца взяты кнопки/editbox] и вызов стандартного диалога):
Option Explicit
Dim objKiXSystem
Dim objKiXForm
Dim strEvent
Dim lngPosition
Dim boolDone
Set objKiXSystem = WScript.CreateObject("Kixtart.System")
boolDone = False
Set objKiXForm = objKiXSystem.Form() 'objKiXForm
With objKiXForm
.Width = 400
.Height = 160
.DockPadding = Array(5, 5, 5, 5)
.Text = "My Form"
.FormBorderStyle = 4
.Icon = objKiXSystem.BuiltinIcons(67)
.Menu = objKiXSystem.MainMenu()
With .Menu
.Style = 1
.ImageList = objKiXSystem.BuiltinImageList
.FileMenu = .MenuItems.Add("&File")
With .FileMenu
With .MenuItems.Add("&Select file...")
.OnClick = "SelectFile()"
.ImageIndex = 1
End With
.MenuItems.Add("-")
With .MenuItems.Add("&Quit")
.OnClick = "Quit()"
.ImageIndex = 70
End With
End With
End With
With .Controls.Add("ToolButton")
.Width = 90
.FlatStyle = 1
.Text = "Select file..."
.Icon = objKiXSystem.BuiltinIcons(1)
.ToolTip = "Click me to select file"
.OnClick = "SelectFile()"
End With
With .Controls.Add("ToolButton")
.Left = objKiXForm.Controls(objKiXForm.Controls.Count - 2).Right + 1
.Width = 25
.FlatStyle = 1
.Icon = objKiXSystem.BuiltInIcons(70)
.ToolTip = "Quit"
.OnClick = "Quit()"
End With
lngPosition = .Controls(.Controls.Count - 1).Bottom + 1
.Line 0, lngPosition, .ClientWidth, lngPosition, &H444444
.Line 0 + 1, lngPosition + 1, .ClientWidth + 1, lngPosition + 1, &HCCCCCC
With .Controls.Add("TextBox")
.Text = ""
.Top = objKiXForm.Controls(objKiXForm.Controls.Count - 2).Bottom + 5
.Width = objKiXForm.ClientWidth
.Anchor = 1 + 4 + 8
.OnDoubleClick = "SelectFile()"
End With
With .Controls.Add("Button")
.Text = "&Select file..."
.Left = objKiXForm.ClientWidth - (.Width + 5)
.Top = objKiXForm.ClientHeight - (.Height + 5) * 2
.Anchor = 2 + 8
.OnClick = "SelectFile()"
End With
With .Controls.Add("Button")
.Text = "&Quit"
.Left = objKiXForm.ClientWidth - (.Width + 5)
.Top = objKiXForm.ClientHeight - (.Height + 5)
.Anchor = 2 + 8
.OnClick = "Quit()"
End With
.Show()
Do While Not boolDone And .Visible
strEvent = .DoEvents(True)
If strEvent <> "" Then
WScript.Echo "Event:", strEvent
Execute(strEvent)
End If
WScript.Sleep 100
Loop
End With
Set objKiXForm = Nothing
Set objKiXSystem = Nothing
WScript.Quit 0
'=============================================================================
'=============================================================================
Sub SelectFile()
With objKiXSystem.OpenFileDialog()
.InitialDirectory = "c:\Temp"
.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
.FilterIndex = 2
.RestoreDirectory = True
If .ShowDialog() = objKiXSystem.DialogResult.OK Then
objKiXForm.Controls.Item("TextBox1").Text = .Filename
WScript.Echo "You have selected file [" & .Filename & "]."
End If
End With
End Sub
'=============================================================================
'===========================================================================
Sub Quit()
boolDone = True
End Sub
'=============================================================================
Кстати, коллега Chulat, в HTA также неплохо выводятся картинки, рисуются графики и анимация. Только не просите примеры у меня .
...НЕ работают. Ошибка программируемых объектов с именем "Kixtart.System"
Кстати, коллега Chulat, в HTA также неплохо выводятся картинки, рисуются графики и анимация. Только не просите примеры у меня .
А может попробуете.
...НЕ работают. Ошибка программируемых объектов с именем "Kixtart.System"
alexii пишет:Кстати, коллега Chulat, в HTA также неплохо выводятся картинки, рисуются графики и анимация. Только не просите примеры у меня .
А может попробуете.
А зачем? HTA — это тот же HTML, только с другим расширением имени файла и одним дополнительным тегом. Вся необходимая информация есть в статье по ссылке, которую alexii уже привёл в самом начале. Чтобы писать на HTA, нужно изучать HTML, а "пример" в данном случае будет пустой тратой времени для обоих сторон.
...НЕ работают. Ошибка программируемых объектов с именем "Kixtart.System"
Очевидно, что Вы не прочитали статью, упомянутую выше, не загрузили библиотеку KiXForms, не зарегистрировали её в системе и, соответственно, получили закономерный результат. Чему удивляться?!
…"пример" в данном случае будет пустой тратой времени для обоих сторон.
Угу. Уж по HTML+графика информации даже в русскоязычном сегменте — море. Да что там, даже на нашем форуме немало примеров на эту тему:
HTA, VBS: Графический редактор файлов иконок
HTA: Графические фильтры DXImageTransform. Сохранение скриншота окна.
HTA: Применение интегрированного медиа-контрола в скриптах
HTA: индикатор прогресса на форме
HTA: клавиатурный тренажёр
...Чтобы писать на HTA, нужно изучать HTML, а "пример" в данном случае будет пустой тратой времени для обоих сторон.
Я бы не сказал, пустая трата времени. Все-таки, опыт приходит со временем.
Alexii, получается, что для этого надо загрузить дополнительные библиотеки?! А со стандартными никак?...
Со стандартными — см. пост #2.
На колу мочало, начинай сначала. Прикольная тема. Все убеждают Chulat'a хоть что-нибудь сделать самостоятельно, а он всеми силами уворачивается. Совершенно правильно он написал в своей подписи:
Главное - желание
Если верблюд пить не хочет, то подводи его хоть к озеру, хоть к реке, хоть к фонтану. Бросьте вы это безнадёжное дело.
На колу мочало, начинай сначала. Прикольная тема. Все убеждают Chulat'a хоть что-нибудь сделать самостоятельно, а он всеми силами уворачивается. Совершенно правильно он написал в своей подписи:
Главное - желание
Если верблюд пить не хочет, то подводи его хоть к озеру, хоть к реке, хоть к фонтану. Бросьте вы это безнадёжное дело.
Наверное, Вы правы, YMP. Я вот хочу узнать, что скрипты могут, есть ли граница, какие возможности.
Честно говоря, в последнее время работы многовато, поэтому обучание оставил "на потом". А так, Ваш форум очень хороший - лучший форум, я бы сказал. И общение тоже на приличном уровне.
На колу мочало, начинай сначала. lol Прикольная тема. Все убеждают Chulat'a хоть что-нибудь сделать самостоятельно, а он всеми силами уворачивается.
Точно . Но тут есть тонкость: мне самому было интересно поглядеть и «пощупать» KiXForms. А про HTA The gray Cardinal выразился совершенно верно: мне сие врядли даст что-то новое, а коллеге Chulat'у — разжёванный пример — тем более.
...мне сие врядли даст что-то новое, а коллеге Chulat'у — разжёванный пример — тем более.
Ваш "разжеваннный пример" пример, Alexii, мне "что-то новое" даст - я увижу интерфейс скрипта. Ведь хочется, чтоб твой скрипт был еще приятен.
Chulat
Библиотеку KiXforms, естественно, надо скачивать и устанавливать — это специальный отдельный (бесплатный) продукт.
Пример HTA есть в статье, ссылку на которую уже дали. Кроме того, на форуме куча примеров HTA в Коллекции. Alexii уже выложил в этой теме пример HTA. Тема HTML-программирования слишком обширна, и пока ты сам не начнёшь изучать HTML-HTA, "примеры" можно будет здесь приводить хоть до пенсии, а толку будет чуть.
Chulat: Как будто интернетом не пользовался - ходи смотри. Всё что увидишь реализованном на каком-нибудь сайте - можешь сделать в HTA. А чтобы узнать как - кнопочка "View Source" поможет.
Nikr, не понял...
Nikr, не понял...
Ты принципиально не хочешь читать ссылку, которую привёл alexii в самом начале? Ну прочти хотя бы первые четыре строки, или хотя бы второе предложение в первом абзаце статьи.
Ну прочти хотя бы первые четыре строки, или хотя бы второе предложение в первом абзаце статьи.
За папу или за маму?
OFF: по рассказам очевидцев, меня ни разу не удалось накормить таким способом .
Хорошо, вижу у вас мозги запарились. Не буду задавать вам вопросы... Дождемся лучших времен.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться