public static void SendStringToPrinter(string PrinterName, string Data) { int length = Data.Length; IntPtr PtrToData = Marshal.StringToCoTaskMemAnsi(Data); int dwWritten; IntPtr hPrinter; Printer.DOCINFOA di = new Printer.DOCINFOA(); di.pDocName = "RAW"; di.pDataType = "RAW"; if (Printer.OpenPrinter(PrinterName.Normalize(), out hPrinter, IntPtr.Zero)) { if (Printer.StartDocPrinter(hPrinter, 1, di)) { if (Printer.StartPagePrinter(hPrinter)) { Printer.WritePrinter(hPrinter, PtrToData, length, out dwWritten); Printer.EndPagePrinter(hPrinter); } Printer.EndDocPrinter(hPrinter); } Printer.ClosePrinter(hPrinter); } Marshal.FreeCoTaskMem(PtrToData); }
public static extern bool StartDocPrinter(IntPtr hPrinter, int level, [MarshalAs(UnmanagedType.LPStruct), In] Printer.DOCINFOA di);