C#查看打印机状态(缺纸)

本文介绍如何使用C#代码检查打印机状态,特别是判断打印机是否缺纸。通过`PrinterHelper`类调用Windows API,获取并解析`PRINTER_INFO_2`结构体,从而得知打印机的详细状态,例如‘准备就绪’、‘忙’、‘缺纸’等。
摘要由CSDN通过智能技术生成
项目需要,使用了研科的T91型号热敏打印机。打印机有缺纸的指示灯,缺纸时windows的打印机状态也能表示是缺纸。


下面的代码能够取得该打印机的状态。


公司另外一台老的夏普打印机,缺纸时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
        {
       
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值