水如烟

                 顺其自然,水到渠成 LzmTW

文或代码皆是面向初学者.我是爱好者,也是初学者.那些"文章",只按自己理解写,我是不知术语名词的.所以只供参考,也仅供参考.

导航

HOW TO:设置默认打印机

Posted on 2006-12-21 12:30  水如烟(LzmTW)  阅读(587)  评论(0编辑  收藏  举报

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