项目需要,使用了研科的T91型号热敏打印机。打印机有缺纸的指示灯,缺纸时windows的打印机状态也能表示是缺纸。
下面的代码能够取得该打印机的状态。
公司另外一台老的夏普打印机,缺纸时windows的打印机状态没有任何显示,也无法通过下面的代码取得打印机状态。
注:代码是在网上查找组合起来的。
前提:1. 在form上追加一个printdocument控件和一个按钮控件。
2. 将对象打印机设置为默认打印机。
1) 新建一个PrinterHelper类。
下面的代码能够取得该打印机的状态。
公司另外一台老的夏普打印机,缺纸时windows的打印机状态没有任何显示,也无法通过下面的代码取得打印机状态。
注:代码是在网上查找组合起来的。
前提:1. 在form上追加一个printdocument控件和一个按钮控件。
2. 将对象打印机设置为默认打印机。
1) 新建一个PrinterHelper类。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace WindowsFormsApplication1
{
class PrinterHelper
{
[DllImport("winspool.drv", CharSet = CharSet.Auto, SetLastError = true)]
private static extern bool OpenPrinter(string pPrinterName, out IntPtr hPrinter, IntPtr pDefault);
[DllImport("winspool.drv", SetLastError = true)]
private static extern bool ClosePrinter(IntPtr hPrinter);
[DllImport("winspool.drv", SetLastError = true)]
private static extern bool GetPrinter(IntPtr hPrinter,
int dwLevel, IntPtr pPrinter, int cbBuf, out int pcbNeeded);
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct PRINTER_INFO_2
{