Многокнопочный графический интерфейс VBSscript

Кто-нибудь знает, как я мог бы сделать 16 кнопок все в двух рядах вертикального графического интерфейса. Каждая кнопка будет устанавливать переменную с именем menuoutput равной 1 для первой кнопки 2 для второго ECT. Я тестировал этот код, но не вижу, есть ли способ добавить к нему 16 кнопок.

x=msgbox("Do you want to start" ,4, "Program")
If x = 6 Then
Wscript.Echo "yes"
Else
Wscript.Echo "no"
End If

2 ответа

Решение

VBScript изначально не поддерживает создание графического интерфейса. Вы можете либо пойти по пути HTA (как показано выше в Ekkehard.Horner), либо вы можете использовать гибридный способ сделать это. В моем примере я использовал сценарий оболочки для достижения этой цели.

1- Создайте скрипт Test.ps1 со следующим кодом

Add-Type -AssemblyName System.Windows.Forms

$Form = New-Object system.Windows.Forms.Form
$Form.Text = "Testing Custom MessageBox"
$Form.Width = 350
$Form.Height = 100
$Form.ControlBox = $False
$Form.StartPosition = "CenterScreen"

$Font = New-Object System.Drawing.Font("Tahoma",10,[System.Drawing.FontStyle]::Bold)
$Form.Font = $Font

$Label = New-Object System.Windows.Forms.Label
$Label.Text = "Custom MsgBox!"
$Label.AutoSize = $True
$Form.Controls.Add($Label)

$Button1 = new-object System.Windows.Forms.Button
$Button1.Location = new-object System.Drawing.Size(5,25)
$Button1.Size = new-object System.Drawing.Size(75,25)
$Button1.Text = "Button1"
$Button1.Add_Click({Write-Host "Button1 was pressed";$Form.Close()})
$Form.Controls.Add($Button1)
$Button2 = new-object System.Windows.Forms.Button
$Button2.Location = new-object System.Drawing.Size(85,25)
$Button2.Size = new-object System.Drawing.Size(75,25)
$Button2.Text = "Button2"
$Button2.Add_Click({Write-Host "Button2 was pressed";$Form.Close()})
$Form.Controls.Add($Button2)
$Button3 = new-object System.Windows.Forms.Button
$Button3.Location = new-object System.Drawing.Size(165,25)
$Button3.Size = new-object System.Drawing.Size(75,25)
$Button3.Text = "Button3"
$Button3.Add_Click({Write-Host "Button3 was pressed";$Form.Close()})
$Form.Controls.Add($Button3)
$Button4 = new-object System.Windows.Forms.Button
$Button4.Location = new-object System.Drawing.Size(245,25)
$Button4.Size = new-object System.Drawing.Size(75,25)
$Button4.Text = "Button4"
$Button4.Add_Click({Write-Host "Button4 was pressed";$Form.Close()})
$Form.Controls.Add($Button4)

$Form.ShowDialog() | Out-Null
Exit 0

2- Назовите это в вашем файле VBScript - Test.vbs

Set objShell = CreateObject("WScript.Shell")
Set exec = objShell.Exec("powershell -executionpolicy bypass -noninteractive -file C:\Users\pankaj.jaju\Desktop\Test.ps1")
exec.StdIn.Close()
WScript.Echo exec.StdOut.ReadAll()
Set exec = Nothing
Set objShell = Nothing
WScript.Quit 0

Поэтому, когда скрипт вызывается, вы сможете увидеть окно сообщениявведите описание изображения здесь

И когда вы нажмете любую кнопку, вы получите соответствующее сообщениевведите описание изображения здесь

Дайте мне знать, если это работает для вас.

"Естественный" способ добавить GUI в VBScript - написать. HTA. Для начала:

<html>
 <head>
  <Title>menubuttons</Title>
  <hta:application id="menubuttons" scroll = "no">
  <script type="text/vbscript">
   Function window_onload
     Dim spMenu : Set spMenu = document.getElementById("spMenu")
     Dim nB
     For nB = 1 To 5
         Dim oB : Set oB = document.createElement("input")
         oB.setAttribute "type", "button"
         oB.id    = "B" & nB
         oB.value = oB.id
         Set oB.onclick = GetRef("menu")
         spMenu.appendChild oB
     Next
   End Function
   Function menu
     MsgBox Me.id, vbOKOnly, "menu selection"
   End Function
  </script>
 </head>
 <body>
  <span id = "spMenu"></span>
  <hr />
 </body>
</html>

выход

Чтобы узнать о DOM, начните здесь.

Другие вопросы по тегам