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

时间:2014-06-21 14:12:37

标签: vbscript hta

我已经设置了一个VBScript hta,让我的用户选择默认打印机。 我目前正试图在视觉上尽可能清楚。

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

E.g。 diaglogue框当前为每台打印机显示'\\ SERVPRT2 \ Printer_Name',但我希望它只显示'Printer_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>

1 个答案:

答案 0 :(得分:0)

为此,您只需要从显示的名称(Text属性)中删除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>