Digital Data - Marlon Schreiber aac764e521 MS
2017-10-06 14:12:27 +02:00

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