描述
在设置某些打印机选项时,检索打印子系统中指定的打印机,打印服务器或其他类型的手柄的句柄。
C++ 语法
BOOL OpenPrinter2( __in LPCTSTR pPrinterName, __out LPHANDLE phPrinter, __in LPPRINTER_DEFAULTS pDefault, __in PPRINTER_OPTIONS pOptions ); |
PowerBASIC 语法
FUNCTION OpenPrinter2A ( _ BYREF pPrinterName AS ASCIIZ, _ BYREF phPrinter AS DWORD, _ BYREF pDefault AS PRINTER_DEFAULTS, _ BYREF pOptions AS PRINTER_OPTIONS _ ) AS LONG |
Unicode版本:
FUNCTION OpenPrinter2W ( _ BYREF pPrinterName AS WSTRINGZ, _ BYREF phPrinter AS DWORD, _ BYREF pDefault AS PRINTER_DEFAULTS, _ BYREF pOptions AS PRINTER_OPTIONS _ ) AS LONG |
参数
pPrinterName
[in]一个指向常量空值终止字符串的指针,指定打印机或打印服务器,打印机对象,XcvMonitor或XcvPort的名称。
对于打印机对象,请使用:PrinterName,Job xxxx。对于XcvMonitor,请使用:ServerName,XcvMonitor MonitorName。对于XcvPort,请使用:ServerName,XcvPort PortName。
Windows Vista:如果为空,则表示本地打印服务器。
phPrinter
[out]指向接收打开的打印机或打印服务器对象的句柄的变量的指针。
pDefault
[in]指向PRINTER_DEFAULTS结构的指针。该值可以为NULL。
pOptions
[in]一个指向PRINTER_OPTIONS结构的指针。该值可以为NULL。
返回值
如果函数成功,则返回值为非零值。
如果函数失败,返回值为零。有关扩展错误信息,请调用GetLastError.
备注
不要在DllMain中调用此方法。
此函数的ANSI版本未实现,并返回ERROR_NOT_SUPPORTED。
通过pDefault参数,您可以指定用于打印由StartDocPrinter函数提交的文档的数据类型和设备模式值。但是,您可以在文档启动后使用SetJob函数覆盖这些值。
您可以调用OpenPrinter2功能打开打印服务器的句柄或确定打印服务器的客户端访问权限。为此,请在pPrinterName参数中指定打印服务器的名称,将PRINTER_DEFAULTS结构的pDatatype和pDevMode成员设置为NULL,并将DesiredAccess成员设置为指定服务器访问掩码值如SERVER_ALL_ACCESS。完成句柄后,将其传递给ClosePrinter函数以关闭它。
使用PRINTER_DEFAULTS结构的DesiredAccess成员来指定必要的访问权限。访问权限可以是以下之一。
所需访问值 |
含义 |
PRINTER_ACCESS_ADMINISTER |
执行管理任务,例如由SetPrinter提供的任务。 |
PRINTER_ACCESS_USE |
执行基本打印操作。 |
PRINTER_ALL_ACCESS |
执行除SYNCHRONIZE以外的所有管理任务和基本打印操作。 |
通用安全性值,如WRITE_DAC |
允许特定的控制访问权限。 |
如果用户没有权限打开具有所需访问权限的指定打印机或打印服务器,则OpenPrinter2调用将失败,返回值为零,GetLastError将返回值ERROR_ACCESS_DENIED。
当pPrinterName是本地打印机时,OpenPrinter2忽略{98979680}PRINTER_OPTIONS结构指向使用pOptions的所有值,但PRINTER_OPTION_CLIENT_CHANGE除外。如果后者被传递,则OpenPrinter2将返回ERROR_ACCESS_DENIED。因此,当打开本地打印机时,OpenPrinter2不超过OpenPrinter的优势。
Windows Vista:OpenPrinter2返回的打印机数据是从本地缓存中检索的,除非在pOptions引用PRINTER_OPTIONS结构的PRINTER_OPTIONS结构的dwFlags中字段中设置了PRINTER_OPTION_NO_CACHE标志。
引用文件 #INCLUDE Once
WinSpool.inc(包括Windows.inc)