博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#获取打印机状态
阅读量:7253 次
发布时间:2019-06-29

本文共 3850 字,大约阅读时间需要 12 分钟。

public static string GetPrinterStatus(string PrinterName)    {    int intValue = GetPrinterStatusInt(PrinterName);    string strRet = string.Empty;    switch (intValue)    {    case 0:    strRet = "准备就绪(Ready)";    break;    case 0x00000200:    strRet = "忙(Busy)";    break;    case 0x00400000:    strRet = "被打开(Printer Door Open)";    break;    case 0x00000002:    strRet = "错误(Printer Error)";    break;    case 0x0008000:    strRet = "初始化(Initializing)";    break;    case 0x00000100:    strRet = "正在输入,输出(I/O Active)";    break;    case 0x00000020:    strRet = "手工送纸(Manual Feed)";    break;    case 0x00040000:    strRet = "无墨粉(No Toner)";    break;    case 0x00001000:    strRet = "不可用(Not Available)";    break;    case 0x00000080:    strRet = "脱机(Off Line)";    break;    case 0x00200000:    strRet = "内存溢出(Out of Memory)";    break;    case 0x00000800:    strRet = "输出口已满(Output Bin Full)";    break;    case 0x00080000:    strRet = "当前页无法打印(Page Punt)";    break;    case 0x00000008:    strRet = "塞纸(Paper Jam)";    break;    case 0x00000010:    strRet = "打印纸用完(Paper Out)";    break;    case 0x00000040:    strRet = "纸张问题(Page Problem)";    break;    case 0x00000001:    strRet = "暂停(Paused)";    break;    case 0x00000004:    strRet = "正在删除(Pending Deletion)";    break;    case 0x00000400:    strRet = "正在打印(Printing)";    break;    case 0x00004000:    strRet = "正在处理(Processing)";    break;    case 0x00020000:    strRet = "墨粉不足(Toner Low)";    break;    case 0x00100000:    strRet = "需要用户干预(User Intervention)";    break;    case 0x20000000:    strRet = "等待(Waiting)";    break;    case 0x00010000:    strRet = "热机中(Warming Up)";    break;    default:    strRet = "未知状态(Unknown Status)";    break;    }    return strRet;   }   internal static int GetPrinterStatusInt(string PrinterName)    {    int intRet = 0;    IntPtr hPrinter;    structPrinterDefaults defaults = new structPrinterDefaults();      if (OpenPrinter(PrinterName, out hPrinter, ref defaults))    {    int cbNeeded = 0;    bool bolRet = GetPrinter(hPrinter, 2, IntPtr.Zero, 0, out cbNeeded);    if (cbNeeded > 0)    {    IntPtr pAddr = Marshal.AllocHGlobal((int)cbNeeded);    bolRet = GetPrinter(hPrinter, 2, pAddr, cbNeeded, out cbNeeded);    if (bolRet)    {    PRINTER_INFO_2 Info2 = new PRINTER_INFO_2();        Info2 = (PRINTER_INFO_2)Marshal.PtrToStructure(pAddr, typeof(PRINTER_INFO_2));        intRet = System.Convert.ToInt32(Info2.Status);    }    Marshal.FreeHGlobal(pAddr);    }    ClosePrinter(hPrinter);    }      return intRet;    }    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]    internal struct structPrinterDefaults    {    [MarshalAs(UnmanagedType.LPTStr)]    public String pDatatype;    public IntPtr pDevMode;    [MarshalAs(UnmanagedType.I4)]    public int DesiredAccess;    };  状态枚举[FlagsAttribute]    internal enum PrinterStatus    {    PRINTER_STATUS_BUSY = 0x00000200,    PRINTER_STATUS_DOOR_OPEN = 0x00400000,    PRINTER_STATUS_ERROR = 0x00000002,    PRINTER_STATUS_INITIALIZING = 0x00008000,    PRINTER_STATUS_IO_ACTIVE = 0x00000100,    PRINTER_STATUS_MANUAL_FEED = 0x00000020,    PRINTER_STATUS_NO_TONER = 0x00040000,    PRINTER_STATUS_NOT_AVAILABLE = 0x00001000,    PRINTER_STATUS_OFFLINE = 0x00000080,    PRINTER_STATUS_OUT_OF_MEMORY = 0x00200000,    PRINTER_STATUS_OUTPUT_BIN_FULL = 0x00000800,    PRINTER_STATUS_PAGE_PUNT = 0x00080000,    PRINTER_STATUS_PAPER_JAM = 0x00000008,    PRINTER_STATUS_PAPER_OUT = 0x00000010,    PRINTER_STATUS_PAPER_PROBLEM = 0x00000040,    PRINTER_STATUS_PAUSED = 0x00000001,    PRINTER_STATUS_PENDING_DELETION = 0x00000004,    PRINTER_STATUS_PRINTING = 0x00000400,    PRINTER_STATUS_PROCESSING = 0x00004000,    PRINTER_STATUS_TONER_LOW = 0x00020000,    PRINTER_STATUS_USER_INTERVENTION = 0x00100000,    PRINTER_STATUS_WAITING = 0x20000000,    PRINTER_STATUS_WARMING_UP = 0x00010000    }

  

转载地址:http://njzdm.baihongyu.com/

你可能感兴趣的文章
Math,random()返回区间内的随机数
查看>>
TCP/IP网络协议的通俗理解,socket,http,soap
查看>>
简单数论
查看>>
Linux 文件系统
查看>>
更换你的Chrome开发工具风格
查看>>
化工厂装箱员 洛谷 p2530
查看>>
代码替换修复总结
查看>>
ubuntu 14.04 LTS 右键菜单解压压缩包时出错
查看>>
Mysql 查询缓存
查看>>
ubuntu搭建mediawiki
查看>>
uoj#274. 【清华集训2016】温暖会指引我们前行(LCT)
查看>>
[51nod1222] 最小公倍数计数(莫比乌斯反演)
查看>>
LeetCode - 37. Sudoku Solver
查看>>
公钥,私钥和数字签名这样最好理解
查看>>
SqlBulkCopy 类
查看>>
csu1811(树上启发式合并)
查看>>
spring 整合maven 定时任务调度,多个任务写法
查看>>
New Concept English Two 15 37
查看>>
L125
查看>>
poj2192
查看>>