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 。