using System; using System.Runtime.InteropServices; namespace Navigator { // Token: 0x02000007 RID: 7 public class OpenRJ11CashDrawer { // Token: 0x06000023 RID: 35 [DllImport("winspool.Drv", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi, EntryPoint = "OpenPrinterA", ExactSpelling = true, SetLastError = true)] public static extern bool OpenPrinter([MarshalAs(UnmanagedType.LPStr)] string szPrinter, out IntPtr hPrinter, IntPtr pd); // Token: 0x06000024 RID: 36 [DllImport("winspool.Drv", CallingConvention = CallingConvention.StdCall, ExactSpelling = true, SetLastError = true)] public static extern bool ClosePrinter(IntPtr hPrinter); // Token: 0x06000025 RID: 37 [DllImport("winspool.Drv", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi, EntryPoint = "StartDocPrinterA", ExactSpelling = true, SetLastError = true)] public static extern bool StartDocPrinter(IntPtr hPrinter, int level, [MarshalAs(UnmanagedType.LPStruct)] [In] OpenRJ11CashDrawer.DOCINFOA di); // Token: 0x06000026 RID: 38 [DllImport("winspool.Drv", CallingConvention = CallingConvention.StdCall, ExactSpelling = true, SetLastError = true)] public static extern bool EndDocPrinter(IntPtr hPrinter); // Token: 0x06000027 RID: 39 [DllImport("winspool.Drv", CallingConvention = CallingConvention.StdCall, ExactSpelling = true, SetLastError = true)] public static extern bool StartPagePrinter(IntPtr hPrinter); // Token: 0x06000028 RID: 40 [DllImport("winspool.Drv", CallingConvention = CallingConvention.StdCall, ExactSpelling = true, SetLastError = true)] public static extern bool EndPagePrinter(IntPtr hPrinter); // Token: 0x06000029 RID: 41 [DllImport("winspool.Drv", CallingConvention = CallingConvention.StdCall, ExactSpelling = true, SetLastError = true)] public static extern bool WritePrinter(IntPtr hPrinter, IntPtr pBytes, int dwCount, out int dwWritten); // Token: 0x0600002A RID: 42 RVA: 0x000026D4 File Offset: 0x000008D4 public static bool SendBytesToPrinter(string szPrinterName, IntPtr pBytes, int dwCount) { int num = 0; IntPtr hPrinter = new IntPtr(0); OpenRJ11CashDrawer.DOCINFOA docinfoa = new OpenRJ11CashDrawer.DOCINFOA(); bool flag = false; docinfoa.pDocName = "My C#.NET RAW Document"; docinfoa.pDataType = "RAW"; if (OpenRJ11CashDrawer.OpenPrinter(szPrinterName.Normalize(), out hPrinter, IntPtr.Zero)) { if (OpenRJ11CashDrawer.StartDocPrinter(hPrinter, 1, docinfoa)) { if (OpenRJ11CashDrawer.StartPagePrinter(hPrinter)) { flag = OpenRJ11CashDrawer.WritePrinter(hPrinter, pBytes, dwCount, out num); OpenRJ11CashDrawer.EndPagePrinter(hPrinter); } OpenRJ11CashDrawer.EndDocPrinter(hPrinter); } OpenRJ11CashDrawer.ClosePrinter(hPrinter); } if (!flag) { int lastWin32Error = Marshal.GetLastWin32Error(); } return flag; } // Token: 0x0600002B RID: 43 RVA: 0x00002788 File Offset: 0x00000988 public static bool SendStringToPrinter(string szPrinterName, string szString) { int length = szString.Length; IntPtr intPtr = Marshal.StringToCoTaskMemAnsi(szString); OpenRJ11CashDrawer.SendBytesToPrinter(szPrinterName, intPtr, length); Marshal.FreeCoTaskMem(intPtr); return true; } // Token: 0x02000008 RID: 8 [StructLayout(LayoutKind.Sequential)] public class DOCINFOA { // Token: 0x0400000B RID: 11 [MarshalAs(UnmanagedType.LPStr)] public string pDocName; // Token: 0x0400000C RID: 12 [MarshalAs(UnmanagedType.LPStr)] public string pOutputFile; // Token: 0x0400000D RID: 13 [MarshalAs(UnmanagedType.LPStr)] public string pDataType; } } }