C# 获取打印机状态
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    }  C# 获取打印机状态的更多相关文章
- LODOP获取打印机状态码和状态码含义测试
		
由于打印机千差万别,打印机执行的标准也不一样,LODOP获取的打印状态码也可能不同,安装了个打印机驱动实际测试一下,测试的打印机驱动是Brother Color Type3 Class Driver. ...
 - .Net中获取打印机的相关信息
		
原文:.Net中获取打印机的相关信息 新项目中牵涉到对打印机的一些操作,最重要的莫过于获取打印机的状态,IP等信息,代码量不大,但是也是自己花了一点时间总结出来的,希望能帮助需要的朋友. Printe ...
 - LODOP获取打印状态码和时间列表
		
之前有博文介绍获取打印状态码和打印状态码的含义,相关博文:LODOP获取打印机状态码和状态码含义测试.此外 ,也有获取状态码及其变化的方法,可以获取打印状态码的列表,列表包含每个状态和每个状态的时间. ...
 - 【VC++技术杂谈003】打印技术之打印机状态监控
		
在上一篇博文中我主要介绍了如何获取以及设置系统的默认打印机,本文将介绍如何对打印机状态进行实时监控,记录下所打印的文档.打印的份数以及打印时间等打印信息. 1.打印机虚脱机技术 在正式介绍如何对打印机 ...
 - iOS 获取网络状态
		
在iOS开发者,获取网络状态比较常用 -(NSString *)getNetWorkStates{ UIApplication *app = [UIApplication sharedApplicat ...
 - C# 获取时间差状态
		
/// <summary> /// 根据时间获取时间状态 /// </summary> /// <param name="dt"></pa ...
 - Best Practices for Performance_4.Optimizing Battery Life 获取充电状态、电池信息,"sticky"类型的广播
		
http://developer.android.com/training/monitoring-device-state/index.htmlhttp://developer.android.com ...
 - Android 通过广播获取网络状态
		
Android系统网络连接状态的改变会发一个广播,注册一个广播接收者,实时动态的检测网络状态,及时提醒用户,优化用户体验. 本文仅提供WIFI 状态的检测作为参考,其他网络连接方式请 ...
 - C# 获取打印机列表以及串口
		
C# 获取打印机列表以及默认打印机.串口列表. /// <summary> /// 获取本地已安装的打印机 /// </summary> /// <returns> ...
 
随机推荐
- VS Bug  当获取其他项目的代码时,  F5 无法进入调试模式. 也不报错....
			
在64位的机子下, 被获用的项目使用X86时会出现. 就会出现 F5 无法进入调试模式. 也不报错.... 打断点也没有用. 在不加入X86项目的代码时, 又可以运行.. 解决方案: 检查 ...
 - IE6 IE7: div中table宽度100%导致的宽度问题
			
问题现象:定义了DOCTYPE的页面 当表格的内容比div的高度还要高时,div会出现滚动条,同时在IE6和IE7下会出现问题: IE6:此时table的100%宽度还是没有滚动条那是的宽度,出现滚动 ...
 - cts 测试环境安装  ubuntu
			
1 下载cts测试包 和 sdk 包 http://source.android.com/compatibility/downloads.html ----cts 包 http://develope ...
 - mysql date数据类型异常原因0000-00
			
1.数据库字段: `dri_lic_first_time` date DEFAULT NULL COMMENT '驾驶证初次领证日期', 2.异常信息 org.springframework.dao. ...
 - HTML5程序设计--SVG
			
SVG(Scalable Vector Graphics):可缩放矢量图形,一种二维图形表示语言. 借助SVG,我们可以实现很多同Canvas API类型的绘制操作,但在Canvas元素上绘制文本的时 ...
 - HDU 4632 Palindrome subsequence(区间dp,回文串,字符处理)
			
题目 参考自博客:http://blog.csdn.net/u011498819/article/details/38356675 题意:查找这样的子回文字符串(未必连续,但是有从左向右的顺序)个数. ...
 - jquery ajax post 传递数组 ,多checkbox 取值
			
jquery ajax post 传递数组 ,多checkbox 取值 http://w8700569.iteye.com/blog/1954396 使用$.each(function(){});可以 ...
 - POJ 1988
			
#include<iostream> #include<stdio.h> #include<algorithm> #define MAXN 30005 using ...
 - java基础知识回顾之javaIO类---BufferedInputStream和BufferedOutputStream
			
MP3的复制过程: package com.lp.ecjtu; import java.io.BufferedInputStream; import java.io.BufferedOutputStr ...
 - com组件的注册
			
错误: 检索 COM 类工厂中 CLSID 为 {79AD7B73-C515-40B4-8B02-CB0F5FA5A1A8} 的组件失败,原因是出现以下错误: 80040154 没有注册类 (异常来自 ...