在 VBScript 中添加 GUI

Adding GUI in VBScript

我有一堆 VBScript,我想要一个 GUI,这样我就不必双击实际的 .vb。有没有一种方法或其他编程语言可以启动 VBS 并具有 GUI?

VBScript GUI 的首选是 HTA。所有可以创建 window/dialog 并调用外部程序的语言都可以 运行 类似

P:\athto\corwscript.exe P:\ath\to\script.vbs pa ra me ters

所以坚持使用 HTA 或选择您最熟悉的语言。

这是一个控制台菜单。右键单击并选择在命令提示符中打开。只有选项 3 和 5 可以做任何事情。这是来自过滤器的菜单代码 https://skydrive.live.com/redir?resid=E2F0CE17A268A4FA!121

Set Arg = WScript.Arguments
set WshShell = createObject("Wscript.Shell")
Set Inp = WScript.Stdin
Set Outp = Wscript.Stdout


Showmenu

Sub ShowHelpMenu
    outp.writeline " -----------------------------------------------------------------------------"
    outp.writeblanklines(1) 
    outp.writeline " Menu"
    outp.writeline " ----"
    outp.writeblanklines(1) 
    outp.writeline "  1 Help              2 HTML Help          3 Version           4 History"
    outp.writeblanklines(1) 
    outp.writeline "  5 Exit"
    outp.writeblanklines(1) 
    outp.write "Filter>"
End Sub

'=============================================
Sub ShowMenu
    Do
        ShowHelpMenu
        Answ=Inp.readline
        If Answ = "1" Then
            ShowGeneralHelp "TEXT"
        Elseif Answ = "2" Then
            ShowGeneralHelp "HTML"
        Elseif Answ = "3" Then
            Version
        Elseif Answ = "4" Then
            History
        Elseif Answ = "5" Then
            Exit Do
        End If
    Loop
End Sub

'=============================================
Sub History
    On Error Resume Next
    WshShell.Run """" & FilterPath & "FilterHistory.txt""" , 1, False
    err.clear
End Sub

'=============================================
Sub Version
    outp.writeblanklines(1) 
    outp.writeline " Version"
    outp.writeline " -------"
    outp.writeblanklines(1) 
    outp.writeline "   Filter Ver 0.6  -  2015  (Public Domain)"
    outp.writeblanklines(1)
    outp.writeline "   by David Candy"
    outp.writeblanklines(1)
End Sub

HTA 或网页给 VBSript 图形 ui。主要区别在于 HTA 避免了安全提示。尽管如果您加载本地网页,网页也会加载。您编写 HTA 就像编写网页一样。

这是 HTML/VBScript 中的一个 HTA,它使用的对象是文本数据库对象。

<html>
<head>
<style>
BODY        {font-size :100%;font-family: Arial, Helvetica, sans-serif;color: black;
        background:URL(images/watermark.gif);background-color: white;
        margin-top:0; margin-left:0pt; margin-right:0pt ; text-align:Justify}
P       {margin-left:40pt;margin-right:10pt}
TABLE       {font-size: 90%; text-align:left; margin-left:40pt;margin-right:10pt;background-color:lavender;width:90%}
THEAD       {color: white;font-weight:bold;background-color:darkblue; margin-left:40pt;margin-right:10pt}
TD      {Vertical-Align:Top;padding:3px}
</style>
</head>
<body>
<OBJECT CLASSID="clsid:333C7BC4-460F-11D0-BC04-0080C7055A83"
    ID=dsoMacro5 WIDTH=0 HEIGHT=0>
    <PARAM NAME="DataURL" VALUE="music.txt">
    <PARAM NAME="UseHeader" Value="True">
    <PARAM NAME="FieldDelim" VALUE="&#09;">
    <PARAM NAME="Sort"  Value="Title">
</OBJECT>
<h3>My Music Database</h3>
<h4>Select a button to filter list</h4>
<p>To search for a word in the Title field use <i>* word *</i>. To search for the first word in a field use <i>Word *</i> or the last word use <i>* word</i>. To search for a string within a word or word use <i>*partialword*</i>. Searches are case sensitive.</i></p>
<p><INPUT Name=tb1 TYPE=Text Value=""> <INPUT ID=cmdNavFirst TYPE=BUTTON VALUE="     Search     " onclick="dsoMacro5.object.filter='Title=' + tb1.value;dsoMacro5.reset()"></p>
<p><INPUT ID=cmdNavFirst TYPE=BUTTON VALUE="   Sort Book   " onclick="dsoMacro5.object.sort='Book';dsoMacro5.reset()"></p>
<hr class="body">
<TABLE ID=tblMacro2 DATASRC=#dsoMacro5 OnRowEnter=Alert(tblMacro2.row)>
<THEAD>
<TR>
<TD WIDTH="20%"><b>Number</b></TD>
<TD WIDTH="60%"><b>Title</b></TD>
<TD WIDTH="20%"><b>Book</b></TD>
</TR>
</THEAD>
<TBODY>
<TR>
<TD WIDTH="20%"><SPAN DATAFLD=Number></SPAN></TD>
<TD WIDTH="60%"><SPAN DATAFLD=Title></SPAN></TD>
<TD WIDTH="20%"><SPAN DATAFLD=Book></SPAN></TD>
</TR>
</TBODY>
</TABLE>
</body>
</html>

为此,您需要一个名为 music.txt 的数据库文件。请注意,字段之间是 TABS

Number  Title   Book
1   One A song
2   Two A another song
3   Three   A yet another song
4   Four    Yes it's a song