也没什么好说的,主要是一直以为status返回的就是状态。应该先通过attributes判断是否是联机,否则status可能是无效的。坑爹的是status里有一个PRINTER_STATUS_OFFLINE。。。看起来应该可以返回脱机状态。这可能各个驱动的实现细节不一致(未证实)。而attributes里的属性目前的打印机都能检测是到否脱机。
DWORD GetPrinterStatus(LPCTSTR printerName)
{
CPrinterHandle printer;
if (!FindOrOpenPrinter(printerName, printer).IsNull())
{
CPrinterInfo<2> PrinterInfo;
if (PrinterInfo.GetPrinterInfo(printer))
{
return PrinterInfo.m_pi->Status;
}
}
return PRINTER_STATUS_ERROR;
}
bool IsPrinterOnline(LPCTSTR printerName)
{
CPrinterHandle printer;
if (!FindOrOpenPrinter(printerName, printer).IsNull())
{
CPrinterInfo<2> PrinterInfo;
if (PrinterInfo.GetPrinterInfo(printer))
{
if (PrinterInfo.m_pi->Attributes&PRINTER_ATTRIBUTE_WORK_OFFLINE)
return false;
else
return true;
}
}
return false;
}
获取打印机是否连机
最新推荐文章于 2022-08-23 15:57:59 发布