没有特别通用的方法。 ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Printer"); ManagementObjectCollection collection = searcher.Get(); foreach (ManagementObject printer in collection) { if (printer["Name"].ToString() == printerName) { if (printer["WorkOffline"].ToString().ToLower().Equals("true")) // This code is working { memoPrintDetail.AppendText("Status : Offline\n");// This code is working return; } else { memoPrintDetail.AppendText("Status : Online\n");// This code is working } MessageBox.Show(printer["ExtendedDetectedErrorState"].ToString()); // Always show "0" value MessageBox.Show(printer["DetectedErrorState"].ToString()); // Always show "0" value } } 还有类似的方法如p invoke win32 平台函数等,这对有些打印机有效。在揽项目时这必须类明确标注为特殊功能,你很可能得直接与打印机交流,而不是调用windows通用库。销售经理:我们的工程师都是高水平的...这是小kiss啦... 程序员:我靠,又得加班查资料了。 总经理:我们的销售经理就是牛。(翻过都来对程序员)你们要增强专业技能...,每年可是有好多应届毕业生找不到工作...
表示将抛出的异常(如果你用无效的设置来访问一台打印机)。捕获一下
这么简单?不会吧.打印时,将打印的内容传送到打印机的缓存后,是不会抛出异常.即使是打印机缺纸也不会中止这一过程.应该从打印机的API入手..个人感觉.....
snmp协议取打印机状态
ManagementObjectSearcher searcher = new
ManagementObjectSearcher("SELECT * FROM Win32_Printer");
ManagementObjectCollection collection = searcher.Get();
foreach (ManagementObject printer in collection)
{
if (printer["Name"].ToString() == printerName)
{
if (printer["WorkOffline"].ToString().ToLower().Equals("true")) // This code is working
{
memoPrintDetail.AppendText("Status : Offline\n");// This code is working
return;
}
else
{
memoPrintDetail.AppendText("Status : Online\n");// This code is working
}
MessageBox.Show(printer["ExtendedDetectedErrorState"].ToString()); // Always show "0" value
MessageBox.Show(printer["DetectedErrorState"].ToString()); // Always show "0" value
}
}
还有类似的方法如p invoke win32 平台函数等,这对有些打印机有效。在揽项目时这必须类明确标注为特殊功能,你很可能得直接与打印机交流,而不是调用windows通用库。销售经理:我们的工程师都是高水平的...这是小kiss啦...
程序员:我靠,又得加班查资料了。
总经理:我们的销售经理就是牛。(翻过都来对程序员)你们要增强专业技能...,每年可是有好多应届毕业生找不到工作...
http://blog.csdn.net/lijipan/archive/2005/04/18/352678.aspx