要添加网络打印机,请问如何判断打印机已存在
请教高手们一个问题:域内用户登录运行添加网络打印机脚本,请问如何判断打印机已存在,存在就不运行添加打印机脚本,以避免每次开机都跳出打印机界面?
开机脚本就一条命令:start \\10.100.140.1\hp_5f
PS:虽然以下命令可以解决这个问题,但是却更改了默认打印机,所以不可取:
rundll32 printui.dll,PrintUIEntry /y /n "\\10.100.140.1\hp_5f"
先谢过! 路过帮忙顶起! XP的话可以考虑WMI,添加打印机要跳出界面?你是模拟操作? 本帖最后由 fpquenya 于 2012-5-25 10:53 编辑
回复 1# pandy05
网络打印机判断起来比较麻烦,因为打印机共享名和Name通常不一样.(可以判断的见7楼)
给你一个vbs脚本不用去判断的' Add a Printer Connection vbs script
On Error Resume Next
Dim oNetwork
Set oNetwork = CreateObject("WScript.Network")
Dim sPrnShare
sPrnShare = "\\10.100.140.1\hp_5f"
oNetwork.AddWindowsPrinterConnection sPrnShare'添加打印机
'oNetwork.SetDefaultPrinter sPrnShare'设置默认打印机
回复 3# 502762378
直接用的批处理,start \\10.100.140.1\hp_5f
所以会跳 回复 4# fpquenya
NAME倒是没关系,打印机都在服务器上,都是可知的
这个VBS怎么样才能不设默认打印机呢,因为个别用户本地已经安装了打印机并且设为默认的,添加的网络打印机只是备用的 本帖最后由 fpquenya 于 2012-5-25 10:58 编辑
回复fpquenya
NAME倒是没关系,打印机都在服务器上,都是可知的
这个VBS怎么样才能不设默认打 ...
pandy05 发表于 2012-5-25 09:25 http://www.autoitx.com/images/common/back.gif
写一个可以判断的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
IfLCase(oNetwork.EnumPrinterConnections.Item(S+1)) = LCase(sPrnName) Then
isInstalled = True '标记已经安装了此打印机
Exit For '找到后即退出For循环,提高性能,后面不能再枚举其他情况了.
End If
Next
End Function
回复 7# fpquenya
强悍,多谢多谢! 写一个可以判断的Vbs,请自己修改打印机实际共享名和Name
fpquenya 发表于 2012-5-25 10:32 http://www.autoitx.com/images/common/back.gif
这个是vbs呀! 都是牛人啊……学习下。 回复 8# pandy05
请楼主修改下标题[已解决] 本帖最后由 pandy05 于 2012-5-25 16:55 编辑
回复 11# fpquenya
因为要脚本还叫判断不能IP段安装不同打印机,故vbs脚本已经修改成au3,在XP上运行没问题,WIN7上会提示 安装驱动,手动确认“安装驱动程序”后程序会出错, 回复 12# pandy05
WMI中Win32_PrinterDriver的addprinterdrive应该r可以安装打印机驱动程序 回复 13# 502762378
这个是什么东东,不懂
页:
[1]