Il WshNetwork.EnumPrinterConnections
collezione non fornisce alcuna informazione circa la stampante predefinita. Si può provare a recuperare il nome della stampante predefinita dal Registro di sistema, invece, anche se non sono sicuro se è affidabile:
Set oShell = CreateObject("WScript.Shell")
strValue = "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows\Device"
strPrinter = oShell.RegRead(strValue)
strPrinter = Split(strPrinter, ",")(0)
WScript.Echo strPrinter
Quanto a WMI, è vero che alcune classi WMI e membri della classe non sono disponibili su versioni precedenti di Windows. Ad esempio, la proprietà Win32_Printer.Default
che indica se la stampante è quella predefinita, non esiste su Windows 2000/NT. Tuttavia, c'è una soluzione semplice per trovare la stampante predefinita su quelle versioni di Windows, che consiste nel controllo per l'attributo PRINTER_ATTRIBUTE_DEFAULT
in Attribute
maschera di bit di ogni stampante:
Const ATTR_DEFAULT = 4
strComputer = "."
Set oWMI = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colPrinters = oWMI.ExecQuery("SELECT * FROM Win32_Printer")
For Each oPrinter in colPrinters
If oPrinter.Attributes And ATTR_DEFAULT Then
Wscript.Echo oPrinter.ShareName
End If
Next
Questo codice funziona in un secondo momento le versioni di Windows pure.
Per maggiori dettagli, dai un'occhiata a questo Hey, Scripting Guy! articolo: Is There Any Way to Determine the Default Printer On a Computer?
Posso chiedere perché non si desidera utilizzare WMI? – Helen
Mi è stato detto che alcune delle funzioni all'interno dello script potrebbero non essere compatibili con i computer Windows 2000. – Mark