C#获取打印机状态
来源:互联网 发布:社会化评论系统源码 编辑:程序博客网 时间:2024/04/27 14:01
通过获取打印机状态,可将打印机的信息传达给移动终端,这样移动端可即时看到打印机状态。 后台打印服务如何获取打印机状态?! 看一下代码:
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
}
0 0
- C#获取打印机状态
- C#获取打印机状态(2)——打印机状态
- C#中获取打印机当前状态?
- C#获取打印机状态的问题
- 转:在C#中获取打印机的当前状态
- C#获取打印机状态(1)——System.Management
- C#获取打印机状态(3)——Epson
- 打印机案例之 获取打印机的状态
- C#获取打印机
- C# 获取打印机列表
- C#获取打印机名
- C#获取打印机列表
- 关于打印机状态的获取
- 获取打印机当前的状态
- C# 使用WIN32API获取打印机
- C# 获取打印机和串口
- android wifi连接打印机并获取打印机状态
- android wifi连接打印机并获取打印机状态
- jscharts.js中如何把左上角的LOGO去掉
- 在安装android studio时如何修改properties类型文件
- MySQL中 FIND_IN_SET 与 IN 的区别
- Android:网络通信框架Volley简介(Google IO 2013)
- 代理模式学习笔记
- C#获取打印机状态
- Android开发中常用到的一些开源框架
- 已文件流的形式把文件展示到页面
- sgu224
- 缘起
- 排序算法(二)—归并排序(Merge sort)
- 安装使用jupyter(原来的notebook)
- 如何自定义注解Annotation,并利用反射进行解析
- NLS需要采购的东西