C# 有关打印机的连接判断...随便看看
各位coder手下留情
/// <summary>
/// 判断是否连接打印机
/// </summary>
public bool CheckPrinter()
{
//取得默认打印机名
PrintDocument pdoc = new PrintDocument();
string printerName1 = pdoc.PrinterSettings.PrinterName;
ManagementScope scope = new ManagementScope(@"\root\cimv2");
scope.Connect();
// Select Printers from WMI Object Collections
ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Printer");
string printerName = "";
foreach (ManagementObject printer in searcher.Get())
{
printerName = printer["Name"].ToString().ToLower();
)
{
if (printer["WorkOffline"].ToString().ToLower().Equals("true"))
{
switch (XtraMessageBox.Show("默认打印机未连接或出错", "警告", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Error))
{
case DialogResult.Retry:
CheckPrinter();
break;
}
return false;
// printer is offline by user
}
else
{
// printer is not offline
return true;
}
}
}
switch (XtraMessageBox.Show("默认打印机未连接或出错", "警告", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Error))
{
case DialogResult.Retry:
CheckPrinter();
break;
}
return false;
}
/// <summary>
/// 判断打印机状态,传Exception
/// </summary>
/// <param name="ex">Exception</param>
public void ErrerPrint(Exception ex)
{
PrintQueue pq = LocalPrintServer.GetDefaultPrintQueue();
string PrintStaticText = "";
bool isPrintErrer = false;
switch (pq.QueueStatus)
{
case PrintQueueStatus.Busy:
PrintStaticText = "打印机正忙";
isPrintErrer = true;
break;
case PrintQueueStatus.DoorOpen:
PrintStaticText = "打印机上的门已打开";
isPrintErrer = true;
break;
case PrintQueueStatus.Error:
PrintStaticText = "由于错误情况,打印机无法打印。";
isPrintErrer = true;
break;
case PrintQueueStatus.IOActive:
PrintStaticText = "打印机正在与打印服务器交换数据";
isPrintErrer = true;
break;
case PrintQueueStatus.Initializing:
PrintStaticText = "打印机正在初始化";
isPrintErrer = true;
break;
case PrintQueueStatus.ManualFeed:
PrintStaticText = "打印机正在等待用户将打印介质放入手动送纸盒";
isPrintErrer = true;
break;
case PrintQueueStatus.NoToner:
PrintStaticText = "打印机墨粉用完";
isPrintErrer = true;
break;
case PrintQueueStatus.None:
PrintStaticText = "未指定状态。";
isPrintErrer = true;
break;
case PrintQueueStatus.NotAvailable:
PrintStaticText = "状态信息不可用";
isPrintErrer = true;
break;
case PrintQueueStatus.Offline:
PrintStaticText = "打印机处于脱机状态。";
isPrintErrer = true;
break;
case PrintQueueStatus.OutOfMemory:
PrintStaticText = "打印机无可用内存";
isPrintErrer = true;
break;
case PrintQueueStatus.OutputBinFull:
PrintStaticText = "打印机的输出纸盒已满";
isPrintErrer = true;
break;
case PrintQueueStatus.PagePunt:
PrintStaticText = "打印机不能打印当前页";
isPrintErrer = true;
break;
case PrintQueueStatus.PaperJam:
PrintStaticText = "打印机卡纸";
isPrintErrer = true;
break;
case PrintQueueStatus.PaperOut:
PrintStaticText = "打印机中没有或已用完当前打印作业所需的纸张类型";
isPrintErrer = true;
break;
case PrintQueueStatus.PaperProblem:
PrintStaticText = "打印机中的纸张导致未指定的错误情况";
isPrintErrer = true;
break;
case PrintQueueStatus.Paused:
PrintStaticText = "打印队列已暂停";
isPrintErrer = true;
break;
case PrintQueueStatus.PendingDeletion:
PrintStaticText = "打印队列正在删除打印作业";
isPrintErrer = true;
break;
case PrintQueueStatus.PowerSave:
PrintStaticText = "打印机处于节能模式";
isPrintErrer = true;
break;
case PrintQueueStatus.Printing:
PrintStaticText = "设备正在打印";
isPrintErrer = true;
break;
case PrintQueueStatus.Processing:
PrintStaticText = "设备正在执行某种工作,如果此设备是集打印机、传真机和扫描仪于一体的多功能设备,则不需要打印";
isPrintErrer = true;
break;
case PrintQueueStatus.ServerUnknown:
PrintStaticText = "打印机处于错误状态";
isPrintErrer = true;
break;
case PrintQueueStatus.TonerLow:
PrintStaticText = "打印机中只剩下少量墨粉";
isPrintErrer = true;
break;
case PrintQueueStatus.UserIntervention:
PrintStaticText = "打印机要求通过用户操作来更正错误情况";
isPrintErrer = true;
break;
case PrintQueueStatus.Waiting:
PrintStaticText = "打印机正在等待打印作业";
isPrintErrer = true;
break;
case PrintQueueStatus.WarmingUp:
PrintStaticText = "打印机正在预热";
isPrintErrer = true;
break;
}
if (isPrintErrer)
{
WriteLog.SetString(PrintStaticText);
XtraMessageBox.Show(PrintStaticText, "警告", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
if (ex.Message == "The net printer is unavailable.")
{
XtraMessageBox.Show("网络打印机不可用", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error);
WriteLog.SetString(ex.Message);
}
else
{
WriteLog.SetException(ex);
}
}
C# 有关打印机的连接判断...随便看看的更多相关文章
- Android 网络连接判断与处理
Android网络连接判断与处理 获取网络信息需要在AndroidManifest.xml文件中加入相应的权限. <uses-permission android:name="and ...
- Android网络连接判断与处理
博客分类: Android 获取网络信息需要在AndroidManifest.xml文件中加入相应的权限. <uses-permission android:name="android ...
- 打印机驱动冲突和端口异常:win10更新部分补丁后,打印机本地连接(连接打印机的主机)可以打印,其他共享网络中的电脑可以连接到打印机,但不能打印——解决方案
一.问题描述: 1.A(WIN10系统)表示连接打印机的电脑,P表示打印机(型号:惠普127M),B(WIN7系统)表示局域网中的电脑 2.A升级后部分补丁后,A可以使用打印机P打印文件,B显示可以连 ...
- android 网络连接判断
Android 网络判断类,用来判断网络状态 使用方法: (1)先初始化 //初始化网络状态检测类 NetworkStateManager.instance().init(this); (2)判断是否 ...
- Android网络连接判断与检测
转自: http://www.cnblogs.com/qingblog/archive/2012/07/19/2598983.html 本文主要内容: 1)判断是否有网络连接 2)判断WIFI网络是否 ...
- Java中使用Socket连接判断Inputstream结束,java tcp socket服务端,python tcp socket客户端
最近在试着用java写一个socket的服务器,用python写一个socket的客户端来完成二者之间的通信,但是发现存在一个问题,服务器方面就卡在读取inputsream的地方不动了,导致后面的代码 ...
- C# 打印机连接状态判断
原文:https://www.cnblogs.com/Old-Fish/p/6258118.html /// <summary> /// 判断是否连接打印机 /// </summar ...
- Win8 app判断网络连接状态
Win8 app判断网络连接状态 NetworkInformation.NetworkStatusChanged += NetworkInformation_NetworkStatusChanged; ...
- Win10 64位连接LJM1005打印机局域网访问
除了网上常见的开Guest用户之类需要额外三个设置 (1)安装LJM1005驱动LJM1005_Full_Solution (2)设置打印机共享和安全中的everyone全部勾选(解决能看到打印机无法 ...
随机推荐
- Sql Server隔离级别(1)
数据库是一个并发操作的环境,就像多线程一样,这样在高并发的情况下回出现一些问题. 假设我们有一张表Account,表结构和数据如下所示 AccountName Balance jo 100 fo 20 ...
- 使用hex6x 进行十六进制转换
接触DSP两年多,虽然烧写Flash的操作都没问题,但是要是问起来为什么这么做的,就有点自惭形秽了.所以花些时间,查阅一下资料,整理一下. 1.先看看BurnFlash都需要什么东西. XXX.out ...
- 苹果手机overflow:auto的卡顿
如果你对某个div或模块使用了overflow: scroll属性,在iOS系统的手机上浏览时,则会出现明显的卡顿现象.但是在android系统的手机上则不会出现该问题 通过一个早上的百度搜索和与前端 ...
- 抢凳子日数据sql
--先找到档期select * from hv_item_info a where a.report_begdate > '2016-07-28' and a.report_begdate &l ...
- 【BZOJ1208】宠物收养所(平衡树,splay)
题意:见题面 思路:因为每个时刻要么全是人要么全是宠物,所以可以一棵splay解决 维护单点插入,单点删除,求前驱,求后继即可 ..,..]of longint; num,fa:..]of longi ...
- android之handle
Android中异步消息处理主要由四个部分组成,Message.handler.messageQueue和looper. 1.message message是线程之间传递的消息,他可以在内部携带少量的 ...
- 关于monkeyrunner的一些初步理解性的题目
1.Monkeyrunner中包含几个基本类?分别大概的作用是什么? Monkeyrunner中基本包含了MonkeyRunner,MonkeyDevice,MonkeyImage MonkeyRun ...
- 非root Android设备上Tcpdump的实现
通常我们在Android应用中执行某个命令时会使用"Runtime.getRuntime().exec("命令路径")"这种方式,但是当我们执行抓包操作时,使用 ...
- 用clock()函数计算多项式的运行时间
百度百科中定义clock():clock()是C/C++中的计时函数,而与其相关的数据类型是clock_t.在MSDN中,查得对clock函数定义如下: clock_t clock(void) ; 简 ...
- 自定义指令directive
1.自定义指令 在angular中,module下面的directive方法用于创建自定义指令,用法: m1.directive('myTab',function(){ return { restri ...