OpenPrinter功能可检索识别指定打印机或打印服务器的句柄。
BOOL OpenPrinter(
LPTSTR 【pPrinterName】, | //指向打印机或服务器名称的指针 |
LPHANDLE 【phPrinter】, | //指向打印机或服务器句柄的指针 |
LPPRINTER_DEFAULTS 【pDefault】 | //指向打印机默认结构的指针 |
); |
参数
【pPrinterName】
指向以空字符结尾的字符串,指定打印机或打印服务器的名称。
【phPrinter】
指向接收标识打开的打印机或打印服务器对象的句柄的变量。
【pDefault】
指向PRINTER_DEFAULTS结构。该值可以为NULL。
返回值
如果函数成功,返回值不为零。
如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.
备注
【pDefault】参数允许应用程序指定用于打印由StartDocPrinter函数提交的文档的数据类型和设备模式值。但是,一旦文档开始,使用SetJob函数可以覆盖这些值。
PRINTER_DEFAULTS PRINTER_DEFAULTS指定的PRINTER_DEFAULTS数据结构的DesiredAccess成员使用OpenPrinter返回的句柄指定应用程序希望执行的访问。如果应用程序希望打开打印机来执行管理任务,例如SetPrinter功能,则应打开打印机,并打印PRINTER_ALL_ACCESS访问。如果应用程序只希望执行基本打印操作,则包含PRINTER_ACCESS_USE的访问值就足够了。
Windows 95:OpenPrinter忽略PRINTER_DEFAULTS PRINTER_DEFAULTS成员。
应用程序可以确定客户端在打印服务器上具有哪些权限,或者获取打印服务器的句柄以调用WaitForPrinterChange.为此,它应该将OpenPrinter设置为服务器的名称,并指定服务器访问掩码值(如SERVER_ALL_ACCESS)。PRINTER_DEFAULTS数据结构的pDatatype和pDevMode成员应设置为NULL。由这样一个呼叫返回的句柄可以传递给ClosePrinter或WaitForPrinterChange函数。
如果用户不拥有打开具有所需访问权限的指定打印机或打印服务器的权限,则OpenPrinter呼叫将失败,并且GetLastError将返回值ERROR_ACCESS_DENIED。
也可以看看
ClosePrinter, SetPrinter, StartDocPrinter, WaitForPrinterChange, PRINTER_DEFAULTS