Python使用win32print模組設定印表機

2021-09-01 00:22:53 字數 1771 閱讀 7727

python通過呼叫win32print模組,可以實現對已安裝的印表機進行一系列管理。首先,你需要安裝好python 2.4 - 3.x和  

pywin32包

。然後就可以檢視當前電腦上安裝了哪些印表機:

import win32print

printers = win32print.enumprinters(5)

print printers

這樣通過enumprinters方法就可以獲取,數字大小可以調整,以獲取更多或更少的資訊。(有關詳細資訊,

請參閱  

文件 ,

當然,去msdn看看,會有更全面的資訊)。上述**會得到類似下面的輸出內容:

((8388608, 'pdfcreator,pdfcreator,', 'pdfcreator', 'edoc printer'),

(8388608, 'samsung ml-2250 series pcl 6,samsung ml-2250 series pcl 6,', 'samsung ml-2250 series pcl 6', ''),

(8388608, 'microsoft xps document writer,microsoft xps document writer,', 'microsoft xps document writer', ''))

如您所見,enumprinters呼叫返回乙個巢狀元組。每個元素包含了一台印表機資訊,其中有兩台虛擬印表機(pdf、xps),如果是網路印表機,最後乙個引數將是unc路徑。有時,我們禁用某台印表機,換用另一台,這就需要一種方法來更改使用者的印表機設定,指向它的新路徑。有了類似上面收集的資訊,就很好辦了。

例如,如果我上面的**找到了舊網路印表機(帶有unc路徑),我可以執行以下操作來換一台印表機:

import win32print

win32print.deleteprinterconnection('\\\\oldunc\path\to\printer')

win32print.addprinterconnection('\\\\newunc\path\to\printer')

安裝印表機的另一種方法是使用subprocess模組的命令呼叫:

import subprocess

subprocess.call(r'rundll32 printui.dll printuientry /in /q /n \\unc\path\to\printer')

對於使用多台印表機的使用者,通常還需要設定預設印表機,這樣使用者就不會意外地列印到別處。有兩種方法可以解決。

如果知道印表機的名稱,則可以使用以下命令:

import win32print

win32print.setdefaultprinter('epson stylus c86 series')

在上面的**中,我將預設設定為epson。該名稱應與windows中「印表機和傳真」對話方塊中顯示的名稱完全相同。

另一種方法也是使用subprocess模組的命令呼叫:

import subprocess

subprocess.call(r'rundll32 printui.dll printuientry /y /n \\unc\path\to\printer')

win32print還支援其他許多其他功能。比如,您可以啟動和停止列印作業,在列印作業上設定優先順序,獲取印表機配置,安排作業,等等。

(本文譯自:

win32彙編使用win32 api實現字串拷貝

字串拷貝,呼叫win32的lstrcpy函式 拷貝了以後用訊息框顯示一下 386 model flat,stdcall option casemap none include s masm32 include windows.inc include s masm32 include user32.i...

win32使用OPENFILENAME瀏覽檔案視窗

使用win32 api開啟 瀏覽檔案視窗,使用openfilename結構體來實現這個功能。如下 openfilename ofn wchar szfile new wchar 512 wchar szfiletitle new wchar 512 memset ofn,0,sizeof ofn m...

win32使用拖放檔案

於win32規劃,使用拖放檔案操作,非經常見 不否認有些人喜歡用button開啟 中使用拖拽,非常easy,僅僅須要在建立窗體的時候使用ws ex acceptfiles識別符號,然後使用乙個訊息函式去處理 當然,這是屬於窗體的擴充套件風格。所以須要使用createwindowex來建立 cw us...