我已经找到了这个VBScript,它在HTA应用程序中显示默认打印机的名称。只要有默认的打印机集,它就能正常工作,但是当我在一个新的用户负载上运行它时(当没有任何默认的打印机设置时),它会产生一个错误:
超出范围的
子脚本:'number:0‘
有办法解决这个问题吗?
<SCRIPT Language="VBScript">
dim defaultprn
Set WshShell = CreateObject("WScript.Shell")
defaultprn = WshShell.RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\Device")
arrPrnStr = Split(defaultprn,",")
fullPrinterString = arrPrnStr(0)
arrFullPrnStr = Split(fullPrinterString,"\")
shortPrinterName= arrFullPrnStr(Ubound(arrFullPrnStr))
document.write("Default printer: " + shortPrinterName)
If shortPrinterName="Fax" Then
changedefaultprinter()
ElseIf shortPrinterName="Microsoft XPS Document Writer" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2013" Then
changedefaultprinter()
ElseIf shortPrinterName="Microsoft Print to PDF" Then
changedefaultprinter()
ElseIf shortPrinterName="Microsoft XPS Document Write" Then
changedefaultprinter()
ElseIf shortPrinterName="Microsoft Document Image Writer" Then
changedefaultprinter()
ElseIf shortPrinterName="Microsoft Office Document Image Writer" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2005" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2006" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2007" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2008" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2009" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2010" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2011" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2012" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2013" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2014" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2015" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2016" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2017" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2018" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2019" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2020" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2021" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2022" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2023" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2024" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2025" Then
changedefaultprinter()
ElseIf shortPrinterName="OneNote" Then
changedefaultprinter()
ElseIf shortPrinterName=Empty Then
changedefaultprinter()
ElseIf shortPrinterName=Null Then
changedefaultprinter()
End If
</script>提前谢谢。
发布于 2019-11-03 13:56:44
问题是,您正在尝试创建一个带有空变量的数组。由于用户没有默认打印机,注册表读取显示为空白。将该空白放入数组中会产生错误。所以,您只需检查它不为空,例如使用<>。在执行其余代码之前,我添加了一个额外的IF语句来检查。此外,在底部还有一个其他的,这意味着如果它是emtpy,那么输出一个定制的消息,没有默认的打印机。
<SCRIPT Language="VBScript">
dim defaultprn
Set WshShell = CreateObject("WScript.Shell")
defaultprn = WshShell.RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\Device")
if defaultprn <> "" Then
arrPrnStr = Split(defaultprn,",")
fullPrinterString = arrPrnStr(0)
arrFullPrnStr = Split(fullPrinterString,"\")
shortPrinterName= arrFullPrnStr(Ubound(arrFullPrnStr))
document.write("Default printer: " + shortPrinterName)
If shortPrinterName="Fax" Then
changedefaultprinter()
ElseIf shortPrinterName="Microsoft XPS Document Writer" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2013" Then
changedefaultprinter()
ElseIf shortPrinterName="Microsoft Print to PDF" Then
changedefaultprinter()
ElseIf shortPrinterName="Microsoft XPS Document Write" Then
changedefaultprinter()
ElseIf shortPrinterName="Microsoft Document Image Writer" Then
changedefaultprinter()
ElseIf shortPrinterName="Microsoft Office Document Image Writer" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2005" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2006" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2007" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2008" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2009" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2010" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2011" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2012" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2013" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2014" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2015" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2016" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2017" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2018" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2019" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2020" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2021" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2022" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2023" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2024" Then
changedefaultprinter()
ElseIf shortPrinterName="Send To OneNote 2025" Then
changedefaultprinter()
ElseIf shortPrinterName="OneNote" Then
changedefaultprinter()
ElseIf shortPrinterName=Empty Then
changedefaultprinter()
ElseIf shortPrinterName=Null Then
changedefaultprinter()
Else
document.write("Default printer: " + "None")
changedefaultprinter()
End if
End If
</script>https://stackoverflow.com/questions/58678624
复制相似问题