Vbscript 在特定列表文本上设置文本颜色

Vbscript 在特定列表文本上设置文本颜色,vbscript,hta,Vbscript,Hta,我已经设置了VBScript hta,让用户选择默认打印机。 我目前正试图在视觉上尽可能清晰地表达出来 如果可能,我想从列出的每台网络打印机的正面隐藏打印服务器地址 例如,Dialogue框当前显示每台打印机的“\\SERVPRT2\Printer\u Name”,但我希望它只显示“Printer\u Name”。或者,如果这是不可能的话,那么也许只是格式化多余的文本与更微妙的颜色 我在下面列出了我的代码——有人知道这是否可行吗?非常感谢 <html> <head&g

我已经设置了VBScript hta,让用户选择默认打印机。 我目前正试图在视觉上尽可能清晰地表达出来

如果可能,我想从列出的每台网络打印机的正面隐藏打印服务器地址

例如,Dialogue框当前显示每台打印机的“\\SERVPRT2\Printer\u Name”,但我希望它只显示“Printer\u Name”。或者,如果这是不可能的话,那么也许只是格式化多余的文本与更微妙的颜色

我在下面列出了我的代码——有人知道这是否可行吗?非常感谢

    <html> 
<head>
    <title>Choose your default printer</title> 
<style type="text/css"> 
    body { 
        font-family:Verdana; 
        font-size: 12px; 
        color: #49403B; 
        background: #FFFFFF; 
        text-align: center; 
        } 
</style> 

<SCRIPT Language="VBScript">

    Sub Window_Onload
window.resizeTo 500,550
        strComputer = "."

        Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
        Set colPrinters = objWMIService.ExecQuery("Select * From Win32_Printer")

        For Each objPrinter in colPrinters
            strPrinter = objPrinter.Name
            Set objOption = Document.createElement("OPTION")
            objOption.Text = strprinter
            objOption.Value = strPrinter
            AvailablePrinters.Add(objOption)
        Next
    End Sub

    Sub SetDefault
        strPrinter = AvailablePrinters.Value
        Set WshNetwork = CreateObject("Wscript.Network")
        WshNetwork.SetDefaultPrinter strPrinter
        Msgbox strprinter & " has been set as your default printer."
    End Sub

</SCRIPT>

Select your default printer, then click the button below<p>

<select size="20" name="AvailablePrinters"></select><p>
<input type="button" value="Set as Default" onClick="SetDefault">
<p>
Close this window after setting a printer as default<p>

为此,只需从显示的名称文本属性中删除printserver。正则表达式替换可能是实现这一点的最佳方法:

Set re = New RegExp
re.Pattern = "^\\\\.*?\\"

For Each objPrinter in colPrinters
    strPrinter = objPrinter.Name
    Set objOption = Document.createElement("OPTION")
    objOption.Text = re.Replace(strprinter, "")
    objOption.Value = strPrinter
    AvailablePrinters.Add(objOption)
Next
请注意,当不同的打印服务器上存在同名打印机队列时,这可能会导致用户混淆

另外,我想为您的代码推荐一些可用性改进:

预先选择默认打印机,以便用户查看当前默认打印机:

For Each objPrinter in colPrinters
    strPrinter = objPrinter.Name
    Set objOption = Document.createElement("OPTION")
    objOption.Text = re.Replace(strprinter, "")
    objOption.Value = strPrinter
    If objPrinter.Default Then objOption.Selected = True
    AvailablePrinters.Add(objOption)
Next
选择更改时自动更改默认打印机,并删除“设置为默认”按钮。这减少了用户的点击次数

<select size="20" name="AvailablePrinters" onChange="SetDefault"></select>

安斯加,你太棒了!这项工作做得很完美,你的补充也很棒,正是我所需要的。真的很高兴少点击需要!还有一个问题-你知道是否可以按名称对打印机进行排序,以便它们按名称顺序排列吗?非常感谢,杰兹