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
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 String ) As String ()
Dim mResult( - 1 ) As 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 String , ByVal PrinterName As String ) As 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
Public Shared Function GetPrinterNames( ByVal computerName As String ) As String ()
Dim mResult( - 1 ) As 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 String , ByVal PrinterName As String ) As 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