2014-06-21 139 views
1

我已經設置了一個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> 

回答

0

爲此,您只需要從顯示的名稱(Text屬性)中刪除打印服務器。正則表達式替換可能是實現這一目標的最佳途徑:

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>
+0

安斯加爾你是驚人的!這完美地完成了這項工作,並且您的添加非常棒,正是我所需要的。真的很滿意所需的點擊次數!還有一個問題 - 你知道是否可以按名稱對打印機進行分類,以便它們按名稱順序排列?非常感謝,Jez –

相關問題