繁体   English   中英

在pywin32中使用DeviceCapabilities

[英]Using DeviceCapabilities with pywin32

我想使用python更改打印机的纸盘。 我尝试使用以下代码来检索有关打印机及其值的信息:

import win32print
x = win32print.DeviceCapabilities('Name of my printer', '192.168.x.x', DC_BINS)
print (x)

DC_BINS应该给我一个整数序列。 每个都属于不同的托盘。 但是,当我尝试运行此程序时,程序提示未定义“ DC_BINS”。 我究竟做错了什么? 我对python相当陌生。

您的代码已更正:

import win32print
import win32con
x = win32print.DeviceCapabilities('Name of my printer', '192.168.x.x', win32con.DC_BINS)
print (x)

列出所有本地和远程打印机及其功能的代码:

import win32print
from win32con import *

DC_CONSTANTS = [
    DC_BINNAMES, DC_BINS, DC_COLLATE, DC_COLORDEVICE, DC_COPIES, DC_DRIVER,
    DC_DUPLEX, DC_ENUMRESOLUTIONS, DC_EXTRA, DC_FIELDS,
    DC_FILEDEPENDENCIES, DC_MAXEXTENT, DC_MEDIAREADY, DC_MEDIATYPENAMES,
    DC_MEDIATYPES, DC_MINEXTENT, DC_ORIENTATION, DC_NUP, DC_PAPERNAMES,
    DC_PAPERS, DC_PAPERSIZE, DC_PERSONALITY, DC_PRINTERMEM, DC_PRINTRATE, DC_PRINTRATEPPM,
    DC_PRINTRATEUNIT, DC_SIZE, DC_STAPLE, DC_TRUETYPE, DC_VERSION,
]


def DC_INFO(constant):
    for a_global in globals().keys():
        if a_global.startswith("DC_") and globals().get(a_global) == constant:
            return a_global
    return "DC_UNKONWN"


for printer in win32print.EnumPrinters(win32print.PRINTER_ENUM_LOCAL | win32print.PRINTER_ENUM_CONNECTIONS):
    print printer
    for constant in DC_CONSTANTS:
        try:
            x = win32print.DeviceCapabilities(printer[2], '', constant)
            print "\t", DC_INFO(constant), x
        except:
            pass

我建议为python使用IDE,好的IDE会标记未知符号并建议从何处导入(如PyCharm一样)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM