gpt4 book ai didi

C#检查打印机状态

转载 作者:可可西里 更新时间:2023-11-01 08:22:13 24 4
gpt4 key购买 nike

在我的应用程序(Windows 7、VS2010)中,我必须在成功打印图像后减少信用计数器。无论如何,在开始整个过程​​之前,我想了解打印机状态,以便在出现缺纸、卡纸等情况时提醒用户。现在,环顾四周,我发现了几个使用 Windows WMI 的示例,但是……从来没有用过。使用THIS片段,例如,如果我取出纸张、打开盖子...关闭打印机,打印机状态也始终准备就绪。

打印机状态现在也一直很好,我正在办公室测试在家里舒适地关闭的打印机。我是否必须用炸药引爆设备才能显示打印机错误状态?

这是我用过的代码

ManagementObjectCollection MgmtCollection;
ManagementObjectSearcher MgmtSearcher;

//Perform the search for printers and return the listing as a collection
MgmtSearcher = new ManagementObjectSearcher("Select * from Win32_Printer");
MgmtCollection = MgmtSearcher.Get();

foreach (ManagementObject objWMI in MgmtCollection)
{

string name = objWMI["Name"].ToString().ToLower();

if (name.Equals(printerName.ToLower()))
{

int state = Int32.Parse(objWMI["ExtendedPrinterStatus"].ToString());
if ((state == 1) || //Other
(state == 2) || //Unknown
(state == 7) || //Offline
(state == 9) || //error
(state == 11) //Not Available
)
{
throw new ApplicationException("hope you are finally offline");
}

state = Int32.Parse(objWMI["DetectedErrorState"].ToString());
if (state != 2) //No error
{
throw new ApplicationException("hope you are finally offline");
}

}

}

其中“printerName”作为参数接收。

谢谢你的建议。

最佳答案

PrintQueue System.Printing 中的类命名空间是你所追求的。它有许多属性,可以提供有关它所代表的打印机状态的有用信息。这里有一些例子;

        var server = new LocalPrintServer();

PrintQueue queue = server.DefaultPrintQueue;

//various properties of printQueue
var isOffLine = queue.IsOffline;
var isPaperJam = queue.IsPaperJammed;
var requiresUser = queue.NeedUserIntervention;
var hasPaperProblem = queue.HasPaperProblem;
var isBusy = queue.IsBusy;

这绝不是一个完整的列表,请记住,队列可能具有一种或多种这些状态,因此您必须考虑处理它们的顺序。

关于C#检查打印机状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5001920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com