VB.NET利用winspool.drv设置默认打印机,通过PrintDocument获取打印机相关配置!
应用场景:
有时候我们会在工作中遇到需要静默批量打印文件,如PDF,xls,doc等文档,但是又不想用第三类库的时候(第三方一般都有打印限制),但又不能直接选择打印机的时候可采用,先获取打印机列表,然后设置列表中打印机先设置为默认打印机,然后直接静默打印即可!比较方便快捷!
视频演示
打印机相关类源代码
''**********************************************************************
''******* 微信公众号:VB小源码 *****************************************
''******* QQ群:344402874 ***********************************************
''******* QQ:463550067 ************************************************
'***********************************************************************
''' <summary>
''' 打印机相关设置类
''' </summary>
Public Class Cls_Print
''' <summary>
''' 引用winspool打印机默认设置
''' </summary>
''' <param name="Name"></param>
''' <returns></returns>
<Runtime.InteropServices.DllImport("winspool.drv")>
Private Shared Function SetDefaultPrinter(Name As String) As Boolean
End Function
''' <summary>
''' 获取打印机列表
''' </summary>
''' <returns></returns>
Public Shared Function GET_PTLIST() As ArrayList
Try
Dim PT As String, alist As New ArrayList
For Each PT In Printing.PrinterSettings.InstalledPrinters
alist.Add(PT)
Next PT
Return alist
Catch ex As Exception
Return Nothing
End Try
End Function
''' <summary>
''' 获取默认打印机名
''' </summary>
''' <returns></returns>
Public Shared Function GET_DefaultPT() As String
Try
Using prtdoc As Printing.PrintDocument = New Printing.PrintDocument()
Return prtdoc.PrinterSettings.PrinterName.ToString
prtdoc.Dispose()
End Using
Catch ex As Exception
Return Nothing
End Try
End Function
''' <summary>
''' 设置默认打印机
''' </summary>
''' <param name="PTNAME"></param>
''' <returns></returns>
Public Shared Function SET_DefaultPT(ByVal PTNAME As String) As String
If PTNAME IsNot Nothing Then
If SetDefaultPrinter(PTNAME) = True Then
Return PTNAME & "设置为默认打印机成功!"
Else
Return PTNAME & "设置为默认打印机失败!"
End If
Else
Return "打印机名为空!"
End If
End Function
End Class
<左右滑动查看完整代码>
调用实例
Public Class FRM_PRINT
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Label2.Text = Cls_Print.GET_DefaultPT ''获取当前默认打印机名
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
ListBox1.Items.AddRange(Cls_Print.GET_PTLIST.ToArray) ''获取打印机列表
End Sub
Private Sub ListBox1_DoubleClick(sender As Object, e As EventArgs) Handles ListBox1.DoubleClick
Cls_Print.SET_DefaultPT(ListBox1.SelectedItem.ToString) ''设置默认打印机
Label2.Text = Cls_Print.GET_DefaultPT ''获取当前默认打印机名
MsgBox(Cls_Print.GET_DefaultPT & " --> 默认打印机设置成功!")
End Sub
End Class
<左右滑动查看完整代码>
实例下载
https://www.lanzous.com/i6kqyxe
好啦!今天教程到这里结束了!