0

の PC にすべてのプリンタをインストールまたは接続したいと考えていますdropdownlist

そのために次のコードを実行しました。

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

しかし、それは私にすべてのプリンターを与えているわけではありません。どこが間違っているのかわかりません。

表示されていないプリンターはネットワーク上にあります。そして、私はネットワークに正常に接続しています。しかし、それは表示されていません。

その間、別のネットワーク内の他のマシンで正常に動作しています。なぜ私のものではないのですか??

これで私を助けてください。

4

1 に答える 1

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

于 2014-05-15T11:33:08.380 に答える