使用win32print获取打印机状态代码

时间:2016-02-09 22:25:10

标签: python printing pywin32

我已阅读win32print的文档,其中指出GetPrinter是用于获取打印机状态的方法。但是,这种方法会返回一个完整的数据元组,并且我不知道哪个元素指示实际状态。有什么想法吗?

(None, 'HP Deskjet F4400', '', 'USB001', 'HP Deskjet F4400 series Class Driver', '', '', None, '', 'winprint', 'RAW', '', None, 1600, 1, 0, 0, 0, 0, 2, 0)

2 个答案:

答案 0 :(得分:2)

如果你将Level=2传递给GetPrinter,它应该返回一个dict。然后你可以检查键。所以,你可以这样做:

d = GetPrinter(yourPrinter, 2)
print(d.keys())

在键中查找“状态”。

  

>   返回包含PRINTER_INFO_ *数据的字典,如果没有传入级别,则返回PRINTER_INFO_2数据的元组。

我建议使用级别2,因为这是默认值。所以它实际上是已经返回的级别(就像元组一样)。

答案 1 :(得分:1)

假设您正在使用GetPrinter的默认级别参数,它将返回在https://msdn.microsoft.com/en-us/library/windows/desktop/dd162845%28v=vs.85%29.aspx定义的PRINTER_INFO_2

这是C ++定义,但它应与您提供的响应中的21个成员匹配。

typedef struct _PRINTER_INFO_2 {
LPTSTR               pServerName;
  LPTSTR               pPrinterName;
  LPTSTR               pShareName;
  LPTSTR               pPortName;
  LPTSTR               pDriverName;
  LPTSTR               pComment;
  LPTSTR               pLocation;
  LPDEVMODE            pDevMode;
  LPTSTR               pSepFile;
  LPTSTR               pPrintProcessor;
  LPTSTR               pDatatype;
  LPTSTR               pParameters;
  PSECURITY_DESCRIPTOR pSecurityDescriptor;
  DWORD                Attributes;
  DWORD                Priority;
  DWORD                DefaultPriority;
  DWORD                StartTime;
  DWORD                UntilTime;
  DWORD                Status;
  DWORD                cJobs;
  DWORD                AveragePPM;
} PRINTER_INFO_2, *PPRINTER_INFO_2;