Imports System.IO Imports System.Runtime.InteropServices Public Class zebraPrinterClass Public Class DOCINFOA Public pDocName As String Public pOutputFile As String Public pDataType As String End Class Public Shared Function OpenPrinter( ByVal szPrinter As String, ByRef hPrinter As IntPtr, ByVal pd As IntPtr) As Boolean End Function Public Shared Function ClosePrinter(ByVal hPrinter As IntPtr) As Boolean End Function ' Public Shared Function StartDocPrinter(ByVal hPrinter As IntPtr, ByVal level As Int32, <[In], MarshalAs(UnmanagedType.LPStruct)> ByVal di As DOCINFOA) As Boolean End Function Public Shared Function EndDocPrinter(ByVal hPrinter As IntPtr) As Boolean End Function Public Shared Function StartPagePrinter(ByVal hPrinter As IntPtr) As Boolean End Function Public Shared Function EndPagePrinter(ByVal hPrinter As IntPtr) As Boolean End Function Public Shared Function WritePrinter(ByVal hPrinter As IntPtr, ByVal pBytes As IntPtr, ByVal dwCount As Int32, ByRef dwWritten As Int32) As Boolean End Function Public Shared Function SetDefaultPrinter(name As String) As Boolean End Function Public Shared Function SendBytesToPrinter(ByVal szPrinterName As String, ByVal pByte As IntPtr, ByVal dwCount As Int32) As Boolean Dim dwError As Int32 = 0, dwWritten As Int32 = 0 Dim hPrinter As IntPtr = New IntPtr(0) Dim di As DOCINFOA = New DOCINFOA Dim bSuccess As Boolean = False di.pDocName = "My VB.NET RAW Document" di.pDataType = "RAW" If OpenPrinter(szPrinterName.Normalize, hPrinter, IntPtr.Zero) Then If StartDocPrinter(hPrinter, 1, di) Then If StartPagePrinter(hPrinter) Then bSuccess = WritePrinter(hPrinter, pByte, dwCount, dwWritten) EndPagePrinter(hPrinter) End If EndDocPrinter(hPrinter) End If ClosePrinter(hPrinter) End If If bSuccess = False Then dwError = Marshal.GetLastWin32Error End If Return bSuccess End Function Public Shared Function SendFileToPrinter(ByVal szPrinterName As String, ByVal szFileName As String) As Boolean Dim fs As FileStream = New FileStream(szFileName, FileMode.Open) Dim br As BinaryReader = New BinaryReader(fs) Dim bytes As Byte() = New Byte(fs.Length - 1) {} Dim bSuccess As Boolean = False Dim pUnmanagedBytes As IntPtr = New IntPtr(0) Dim nLength As Integer nLength = Convert.ToInt32(fs.Length) bytes = br.ReadBytes(nLength) pUnmanagedBytes = Marshal.AllocCoTaskMem(nLength) Marshal.Copy(bytes, 0, pUnmanagedBytes, nLength) bSuccess = SendBytesToPrinter(szPrinterName, pUnmanagedBytes, nLength) Marshal.FreeCoTaskMem(pUnmanagedBytes) Return bSuccess End Function Public Shared Function SendStringToPrinter(ByVal szPrinterName As String, ByVal szString As String) As Boolean Try Dim pBytes As IntPtr Dim dwCount As Int32 dwCount = (szString.Length + 1) * Marshal.SystemMaxDBCSCharSize pBytes = Marshal.StringToCoTaskMemAnsi(szString) SendBytesToPrinter(szPrinterName, pBytes, dwCount) Marshal.FreeCoTaskMem(pBytes) Return True Catch ex As Exception MsgBox("SendStringToPrinter Error ::" & ex.Message) Return False End Try End Function End Class