2014-05-15 13 views
0

dropdownlist에 모든 프린터를 설치하거나 PC에 연결하려고합니다.vb.net에 설치된 프린터를 표시 할 때 정확하지 않습니다.

다음 코드를 작성했습니다.

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

그러면 로컬 및 네트워크 모두에서 사용할 수있는 모든 프린터를 어떻게 추가 할 수 있습니까? –

답변

0

코드에는 로컬로 설치된 프린터 만 표시됩니다. 네트워크에서 프린터를 찾으려면 WMI 쿼리를 사용할 수 있습니다. 이 소스에서 수정

' 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 

:

System.Management 네임 스페이스에 대한 참조를 추가,이 코드를 사용 http://www.dotnetcurry.com/showarticle.aspx?ID=148