原文:http://www.blog.pythonlibrary.org/2010/02/14/python-windows-and-printers/
我这样做,除了我的软件开发的技术支持相当。在我们的小店里,我们得到解决任何涉及到技术,从网络到软件到打印机。我认为最讨厌的一个方面是试图让打印机来处理用户希望的方式。另一个问题是对具有从PC到漫游到PC作为他们工作的一部分用户设置打印机。这些用户通常只需要是在其特定的位置在任何给定时间的打印机。这是非常困难的,以适应这种类型的用户,特别是当电脑正在使用的24/7,这是在我的情况如此。这是Python的用武之地。
在本文中,我将向你展示如何访问的计算机上当前安装的打印机,更改其中一个是默认安装另一台打印机。我也将向你展示如何访问有关安装的信息可以在编码了其他管理脚本有帮助的打印机各种点点滴滴。
跟着一起,你需要的Python 2.4 - 3.x和的PyWin32包。
对于我们这一天的第一招,让我们看看哪些打印机当前安装我们的PC上:
进口 win32print
打印机= win32print。EnumPrinters (5 )
打印的打印机
您可以使用在EnumPrinters不同的整数呼吁得到更多或更少的信息。请参阅文档以了解更多信息(你可能需要在MSDN看为好)。总之,这里的是一个示例输出:
((8388608, 'SnagIt 9,SnagIt 9 Printer,', 'SnagIt 9', ''), (8388608, 'Samsung ML-2250 Series PCL 6,Samsung ML-2250 Series PCL 6,', 'Samsung ML-2250 Series PCL 6', ''), (8388608, 'PDFCreator,PDFCreator,', 'PDFCreator', 'eDoc Printer'), (8388608, 'Microsoft XPS Document Writer,Microsoft XPS Document Writer,', 'Microsoft XPS Document Writer', ''))
正如你所看到的,EnumPrinters调用返回的元组嵌套的元组。如果我没有记错,最后一个参数将是一个UNC路径如果打印机是网络打印机。在我工作的地方,我们不得不淘汰一些服务器的对他们的打印机,需要一种方法来改变用户的打印机设置,使它们指向新的路径。利用上面收集的信息使这个容易得多。
例如,如果我的脚本遍历该列表,发现使用过时的UNC路径的打印机,我可以做这样的事情来解决它:
进口 win32print
win32print。DeletePrinterConnection (' \\ \\ oldUNC \ p ATH \ t Ø \ p rinter' )
win32print。AddPrinterConnection (' \\ \\ newUNC \ p ATH \ t Ø \ p rinter' )
要安装打印机的另一种方法是使用低级别命令行调用的子进程模块:
进口 子
子。通话( - [R 'RUNDLL32 printui.dll PrintUIEntry /中/ Q / N \\ UNC \ p ATH \ t Ø \ p rinter' )
对于我和漫游用户上面提到的情况,我也通常需要设置默认打印机,使用户不小心打印到不同的部门。有迹象表明,我发现,工作相当好两种方式。如果您知道打印机的名称,可以使用以下命令:
进口 win32print
win32print。SetDefaultPrinter (“爱普生Stylus C86系列” )
在上面的代码,我设置了默认采用Epson。该名称应该是完全一样的Windows中的“打印机和传真”对话框中显示的名称(去开始,设置,在Windows XP打印机和传真)。另一种方式做,这是另一个子电话:
进口 子
子。通话( - [R 'RUNDLL32 printui.dll PrintUIEntry / Y / N \\ UNC \ p ATH \ t Ø \ p rinter' )
有迹象表明,win32print支持许多附加功能。您可以启动和停止打印作业,在打印作业设置优先级,让打印机的配置,调度作业等等。我希望你发现这很有帮助。