Author:水如烟  
需要引用System.Management空间再Imports System.Management
使用:

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        
For Each printer As String In PrinterService.GetPrinterNames(".")
            Console.WriteLine(printer)
        
Next
    
End Sub

    
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        Console.WriteLine(PrinterService.SetDefaultPrinter(
".""EPSON LQ-1600KIII"))
    
End Sub

 

Public Class PrinterService

    
Public Shared Function GetPrinterNames(ByVal computerName As StringAs String()
        
Dim mResult(-1As String

        
Dim gManagementObject As New ManagementObject
        gManagementObject.Scope 
= New ManagementScope(String.Format("\\{0}\root\cimv2", computerName))
        
Dim gSearcher As New ManagementObjectSearcher(String.Format("SELECT DeviceID FROM {0}""Win32_Printer"))
        gSearcher.Scope 
= gManagementObject.Scope
        
Try
            
For Each mManagementObject As ManagementObject In gSearcher.Get()
                
ReDim Preserve mResult(mResult.Length)
                mResult(mResult.Length 
- 1= mManagementObject.Properties.Item("DeviceID").Value
            
Next
        
Catch ex As Exception
            Console.WriteLine(ex.Message)
        
Finally
            gSearcher.Dispose()
            gManagementObject.Dispose()
        
End Try

        
Return mResult
    
End Function

    
Public Shared Function SetDefaultPrinter(ByVal computerName As StringByVal PrinterName As StringAs Boolean
        
Dim mResult As Boolean = False

        
Dim gManagementObject As New ManagementObject
        gManagementObject.Scope 
= New ManagementScope(String.Format("\\{0}\root\cimv2", computerName))
        
Dim gSearcher As New ManagementObjectSearcher(String.Format("SELECT DeviceID FROM {0}""Win32_Printer"))
        gSearcher.Scope 
= gManagementObject.Scope
        
Try
            
For Each mManagementObject As ManagementObject In gSearcher.Get()
                
If mManagementObject.Properties.Item("DeviceID").Value.ToString.Equals(PrinterName) Then
                    mManagementObject.InvokeMethod(
"SetDefaultPrinter"Nothing)
                    
Exit For
                
End If
            
Next

            mResult 
= True
        
Catch ex As Exception
            Console.WriteLine(ex.Message)
        
Finally
            gSearcher.Dispose()
            gManagementObject.Dispose()
        
End Try

        
Return mResult
    
End Function
End Class

相关文章:

  • 2021-12-12
  • 2021-04-10
  • 2021-12-09
  • 2022-12-23
  • 2021-06-10
  • 2021-12-31
  • 2022-12-23
猜你喜欢
  • 2021-12-13
  • 2022-12-23
  • 2021-09-06
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案