我希望在dropdownlist
中安装所有打印机或连接到PC。
我为此完成了以下代码。
Public Function FillddlPrinters() As Boolean
Dim printersettings As New System.Drawing.Printing.PrinterSettings
Dim Cnt As Integer = 0
Me.ddlPrinter.Items.Clear()
For i = 0 To Drawing.Printing.PrinterSettings.InstalledPrinters.Count - 1
If Drawing.Printing.PrinterSettings.InstalledPrinters(i).ToString.ToUpper.Trim.Contains("XPS") Or _
Drawing.Printing.PrinterSettings.InstalledPrinters(i).ToString.ToUpper.Trim.Contains("FAX") Or _
Drawing.Printing.PrinterSettings.InstalledPrinters(i).ToString.ToUpper.Trim.Contains("PDF") Then
Continue For
End If
Me.ddlPrinter.Items.Insert(Cnt, Drawing.Printing.PrinterSettings.InstalledPrinters(i))
Cnt += 1
Next
Me.ddlPrinter.Items.Insert(0, "Select Printer")
End Function
但它没有给我所有的打印机。我没有得到它出错的地方。
未显示的打印机在网络上。我已成功连接到网络。但是它没有显示出来。
同时它在不同网络中的其他机器上运行 ok 。为什么不是我的?
请帮我解决这个问题。
答案 0 :(得分:0)
您的代码只会显示本地安装的打印机。如果要在网络上查找打印机,可以使用WMI查询。
添加对System.Management
命名空间的引用,然后使用以下代码:
' Use the ObjectQuery to get the list of configured printers
Dim oquery As System.Management.ObjectQuery = New System.Management.ObjectQuery("SELECT * FROM Win32_Printer")
Dim mosearcher As System.Management.ManagementObjectSearcher = New System.Management.ManagementObjectSearcher(oquery)
Dim moc As System.Management.ManagementObjectCollection = mosearcher.Get()
For Each mo As System.Management.ManagementObject In moc
Debug.WriteLine(mo.ToString)
Next