OpenPrinter函數
OpenPrinter函數擷取指定印表機或列印伺服器的標識控制代碼。
BOOL OpenPrinter(
LPTSTR pPrinterName, // 指向印表機或伺服器名稱的指標
LPHANDLE phPrinter, // 指向印表機或伺服器的控制代碼
LPPRINTER_DEFAULTS pDefault //指向印表機預設結構的指標
);
參數
pPrinterName
指向一個以Null終結的字串,用來指定印表機或列印伺服器的名稱。
phPrinter
指向一個變數,以接收控制代碼標識開啟的印表機或列印伺服器對象。
pDefault
指向一個 PRINTER_DEFAULTS 結構。此值可以為空白。
傳回值
如果函數成功,傳回值是非零。
如果函數失敗,傳回值是零。要得到擴充的錯誤資訊,請調用getlasterror函數 。
備忘
pDefault參數允許一個應用程式
來指定資料類型和裝置模式值用於StartDocPrinter函數提交列印文檔 。不過,一旦檔案已經開始,
這些值可以使用setjob函數淩駕(覆蓋)。
PRINTER_DEFAULTS 資料結構成員之一 DesiredAccess , 指向由pDefault指定的openprinter控制代碼許可權。
如果應用程式要開啟一個印表機執行管理工作。
例如setprinter函數,它應開啟印表機與PRINTER_ALL_ACCESS 許可權。
如果某個應用程式只執行基本的列印業務只要PRINTER_ACCESS_USE就足夠了。
在Windows 95 : openprinter忽略了desiredaccess成員printer_defaults 。
應用程式可以決定客戶在列印伺服器上有什麼許可權,或擷取一個列印伺服器控制代碼以調用waitforprinterchange 。
這樣,它應要求openprinter與pprintername設定為伺服器的名稱,並應指定一個服務許可權值,如SERVER_ALL_ACCESS 。
printer_defaults結構的成員pdatatype和pdevmode應設定為NULL 。
該控制代碼經過這樣的調用可能會被傳遞到ClosePrinter 或 WaitForPrinterChange 函數。
如果使用者並不持有開啟一個指定的印表機或列印伺服器的許可權,與預期的許可, openprinter調用將失敗,並且
getlasterror將傳回值error_access_denied 。