本帖最后由 fpquenya 于 2012-5-25 10:58 编辑
回复 fpquenya
NAME倒是没关系,打印机都在服务器上,都是可知的
这个VBS怎么样才能不设默认打 ...
pandy05 发表于 2012-5-25 09:25
写一个可以判断的Vbs,请自己修改打印机实际共享名和Name'----------------------------------------
'添加windows打印机="\\xcprn\XC_EPSON9450"
'单引号是注释,要启用取消行首的单引号即可.
'----------------------------------------
Option Explicit
Dim oNetwork
Set oNetwork = CreateObject("WScript.Network")
'绝对打印机共享名(注意可能和枚举出来的Item打印机名不同)
Dim sPrnShareName '打印机共享名
sPrnShareName = "\\xcprn\XC_EPSON9450"
Dim sPrnName '打印机Name(自己更改)
sPrnName = "\\xcprn\EPSON Stylus Pro 9450"
'如果没有安装,执行添加windows打印机
If isInstalled = False Then
oNetwork.AddWindowsPrinterConnection(sPrnShareName) '添加打印机
'oNetwork.SetDefaultPrinter(sPrnShareName) '设置默认打印机
MsgBox "成功添加了打印机: " & sPrnShareName,vbInformation,"完成"
'Else
' MsgBox "已经添加过打印机: " & sPrnShareName,vbExclamation,"提示:"
End If
'----------------------------------------
'当Item(S=0)为打印机端口号或IP地址;
'当Item(S=1)为打印机名(可能不是共享名,建议手动改成一致)
'0和1代表一个打印机对象,所以step为2
'当S=N(count)为总的索引数(不代表任何打印机对象),所以要count-1
'----------------------------------------
Function isInstalled()
Dim S '定义枚举打印机collection返回的索引数
isInstalled = False
For S = 0 To oNetwork.EnumPrinterConnections.Count-1 Step 2
If LCase(oNetwork.EnumPrinterConnections.Item(S+1)) = LCase(sPrnName) Then
isInstalled = True '标记已经安装了此打印机
Exit For '找到后即退出For循环,提高性能,后面不能再枚举其他情况了.
End If
Next
End Function
|