【发布时间】:2020-10-09 18:08:17
【问题描述】:
Private Function SelectAPrinter(myName As String) As Printer
Dim strComputer As String
Dim objWMIService As Object
Dim myPrinter As Object
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set myPrinter = objWMIService.ExecQuery("Select * from Win32_Printer where Name = '" & myName & "'")
Set SelectAPrinter = myPrinter
End Function
当然,VB6 会以“类型不匹配”来攻击我,这并不奇怪。我正在尝试设置一个对象 (myPrinter) 输入打印机。
我不知道如何完成这个功能。 是否有一种将对象“强制转换”为打印机类型的方法?
【问题讨论】:
-
让我回答为什么不使用vb6内置的PRINTERS集合的问题?答案是因为实际上有 500 多个重定向(许多似乎是重复的)填充客户端打印机集合。 WMI 解决了这个问题并允许我建立一个打印机列表 - 没有重定向或重复。