54 lines
3.0 KiB
VB.net
54 lines
3.0 KiB
VB.net
Imports System.Runtime.InteropServices
|
|
|
|
Public Class RawPrinter
|
|
Public Structure DOCINFO
|
|
<MarshalAs(UnmanagedType.LPWStr)> Public DocumentName As String
|
|
<MarshalAs(UnmanagedType.LPWStr)> Public OutputFile As String
|
|
<MarshalAs(UnmanagedType.LPWStr)> Public DataType As String
|
|
End Structure
|
|
|
|
<DllImport("winspool.drv", CharSet:=CharSet.Unicode, ExactSpelling:=False, CallingConvention:=CallingConvention.StdCall)> _
|
|
Private Shared Function OpenPrinter(ByVal pPrinterName As String, ByRef phPrinter As IntPtr, ByVal pDefault As Integer) As Long
|
|
End Function
|
|
|
|
<DllImport("winspool.drv", CharSet:=CharSet.Unicode, ExactSpelling:=False, CallingConvention:=CallingConvention.StdCall)> _
|
|
Private Shared Function StartDocPrinter(ByVal hPrinter As IntPtr, ByVal Level As Integer, ByRef pDocInfo As DOCINFO) As Long
|
|
End Function
|
|
|
|
<DllImport("winspool.drv", CharSet:=CharSet.Unicode, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)> _
|
|
Private Shared Function StartPagePrinter(ByVal hPrinter As IntPtr) As Long
|
|
End Function
|
|
|
|
<DllImport("winspool.drv", CharSet:=CharSet.Ansi, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)> _
|
|
Private Shared Function WritePrinter(ByVal hPrinter As IntPtr, ByVal data As String, ByVal buf As Integer, ByRef pcWritten As Integer) As Long
|
|
End Function
|
|
|
|
<DllImport("winspool.drv", CharSet:=CharSet.Unicode, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)> _
|
|
Private Shared Function EndPagePrinter(ByVal hPrinter As IntPtr) As Long
|
|
End Function
|
|
|
|
<DllImport("winspool.drv", CharSet:=CharSet.Unicode, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)> _
|
|
Private Shared Function EndDocPrinter(ByVal hPrinter As IntPtr) As Long
|
|
End Function
|
|
|
|
<DllImport("winspool.drv", CharSet:=CharSet.Unicode, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)> _
|
|
Private Shared Function ClosePrinter(ByVal hPrinter As IntPtr) As Long
|
|
End Function
|
|
|
|
Public Shared Sub SendToPrinter(ByVal printerJobName As String, ByVal rawStringToSendToThePrinter As String, ByVal printerNameAsDescribedByPrintManager As String)
|
|
Dim handleForTheOpenPrinter = New IntPtr()
|
|
Dim documentInformation = New DOCINFO()
|
|
Dim printerBytesWritten = 0
|
|
documentInformation.DocumentName = printerJobName
|
|
documentInformation.DataType = vbNullString
|
|
documentInformation.OutputFile = vbNullString
|
|
OpenPrinter(printerNameAsDescribedByPrintManager, handleForTheOpenPrinter, 0)
|
|
StartDocPrinter(handleForTheOpenPrinter, 1, documentInformation)
|
|
StartPagePrinter(handleForTheOpenPrinter)
|
|
WritePrinter(handleForTheOpenPrinter, rawStringToSendToThePrinter, rawStringToSendToThePrinter.Length, printerBytesWritten)
|
|
EndPagePrinter(handleForTheOpenPrinter)
|
|
EndDocPrinter(handleForTheOpenPrinter)
|
|
ClosePrinter(handleForTheOpenPrinter)
|
|
End Sub
|
|
End Class
|