在vb.net中显示安装的打印机不准确

时间:2014-05-15 05:45:55

标签: vb.net printers network-printers

我希望在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 。为什么不是我的?

请帮我解决这个问题。

1 个答案:

答案 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

从此来源修改:http://www.dotnetcurry.com/showarticle.aspx?ID=148