OpenPrinter函数

打印系统开发(66)——监控打印机的打印队列 问: 如何监控打印机的打印队列,可以获得正在打印文档的文档名,状态,所有者,页数,大小等。 答: 1、C++代码 一、API介绍: API是ApplicationProgrammingInterface的缩写,也就是应用程序调用系统功能的接口。WindowsAPI主要包括系统定义的函数、消息及与之相关的数据类型。我们使用各种开发工具归根结底都是和API打交道。 二、与打印状态相关... 阅读详情


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 。

C++打印机首选项设置 C++打印机彩打设置 前言 最近在开发打印机SDK,之前一直做黑白打印机,后面来了一个彩色打印机,要求彩色文档不但可以打印出彩色纸张,也能打印出黑白纸张;打印机默认是黑白文档打印黑白纸张,彩色文档打印彩色纸张,需要调用windows api来控制。 一、打印机首选项 首先查看打印机是否支持颜色设置(必须先安装打印机驱动,并且正常连接打印机),去电脑查看打印机首选项,【控制面板】->【设备和打印机】->【选中彩色打印机】->【右击选择打印机首选项】->【点击颜色窗口】,如下图所示: 阅读详情

相关推荐

用C++ Builder编程监控打印机队列状态

目前,关于API的应用的文章可以说是遍布各类期刊、杂志。但是多数实例与应用都是基于Visual Basic 的,多数人反映针对于C++ Builder的应用太少,而与打印相关的应用更是少之又少(即使是Visual Basic在这方面的应用可是很少),事实的确如此。这是一篇介绍应用C++ Builder结合Windows API来实现对打印机队列状态进行监控的文章。一、API介绍:API是Appli

Johnny的专栏 1775

win32print的API介绍

win32print的API介绍,官网地址Module win32print OpenPrinter  打开指定的打印机,并获取打印机的句柄 GetPrinter  取得与指定打印机有关的信息 SetPrinter  对一台打印机的状态进行控制 ClosePrinter  关闭一个打开的打印机对象 AddPrinterConnection  连接指定的打印机 DeletePrinterConnection  删除与指定打印机的连接 EnumPrinters  枚举系统中安装的打印机 ...

mihaoyun.com的专栏 3716

使用C++实现打印机驱动枚举

本文还有配套的精品资源,点击获取 简介:打印机驱动是操作系统与物理打印机沟通的桥梁,本文重点介绍如何使用C++和Windows API来枚举本地及网络打印机驱动和端口。这涉及到包含 windows.h 头文件、使用 EnumPrinters 函数及处理 PRINTER_INFO_2 结构体来获取并显示打印机的详细信息。掌握这些技术将...

weixin_35950531的博客 1677

python win32print api_python学习笔记(win32print API介绍)

最近博主在研究用python控制打印机OpenPrinter  打开指定的打印机,并获取打印机的句柄GetPrinter  取得与指定打印机有关的信息SetPrinter  对一台打印机的状态进行控制ClosePrinter  关闭一个打开的打印机对象AddPrinterConnection  连接指定的打印机DeletePrinterConnection  删除与指定打印机的连接EnumPrin...

weixin_39984201的博客 581

WPS占用C盘空间解决方案与优化技巧

办公软件在长期使用过程中会产生大量缓存和历史文件,这些文件往往隐藏在系统目录中,导致磁盘空间被无声占用。以WPS为例,其版本历史备份、云同步缓存和模板库是主要空间占用源。通过分析文件存储机制,可以定位到具体的缓存路径,如AppData目录下的Kingsoft文件夹。针对这一问题,有效的解决方案包括手动清理、自动化脚本和注册表优化。对于需要持续监控的场景,可以结合PowerShell脚本和任务计划实现自动化管理。在实际应用中,这些技术不仅适用于WPS,也可迁移到其他办公软件的空间优化中,是每位IT运维人员和高

weixin_30788239的博客 458

Realtek RTD1319D芯片解析:H.266与AV1双解码的机顶盒SoC

视频编解码技术是数字媒体传输的核心,H.266/VVC作为新一代标准,相比H.265提升50%压缩效率,显著降低带宽需求。其实现原理依赖于专用硬件解码器和并行处理架构,在超高清视频传输领域具有重要价值。Realtek RTD1319D作为首款商用H.266处理器,采用异构计算设计,集成四核ARM CPU和独立视频处理单元,同时支持AV1解码,兼顾市场兼容性。该SoC特别适合4K机顶盒、数字标牌等应用场景,其HDMI 2.1a接口和DVB解调器为超高清内容传输提供完整解决方案。开发时需注意散热设计和内存配置优

weixin_42591413的博客 672

打印相关Api函数

Api函数列表 ——与打印相关    调用顺序: OpenPrinter:获取指定打印机的句柄 GetPrinter:获取打印机信息 StartDocPrinter:开始打印作业 WritePrinter:向打印机输出数据 EndDocPrinter:结束打印作业 ClosePrinter:关闭打开的打印机   Api函数名 函数说明

liwenya的专栏 1539

触摸屏蓝牙控制

使用杰理芯片通过蓝牙实现触摸屏功能,需要结合触摸屏数据采集、蓝牙数据传输以及移动端应用的实现。

m0_46145044的博客 1109

调用API弹出打印机属性对话框

调用api弹出打印机属性对话框 Author:vitoriatangFrom:Internet.NET Framework封装了很多关于打印的对话框,比如说PrintDialog, PageSetupDialog. 但是有的时候我们还需要关心打印机属性对话框,那么就可以调用API来解决这个问题。有几个API函数与之相关PrinterPropertiesDocumentPropertiesOpe

jxufewbt的专栏 929

FPGA:UART串口接收(高干扰情况)

在上一篇文章中介绍过UART串口接收模块,其中一个需要优化的方向就是在高干扰情况下,如何实现可靠的UART串口接收任务。

weixin_50164178的博客 1672

一、适配显示服务

基于rk3568适配显示服务,调动gpu;

XiaoC_Android的博客 1001

直接打印RAW文件到打印机

http://support.microsoft.com/kb/322091/zh-cn?spid=548&sid=348#top 好像是微软官方的支持给出了VC#的解决办法,可以运行,也不报错,就是没啥反应啊! 基本调用函数过程是:二进制文件, OpenPrinter-->StartDocPrinter-->StartPagePrinter-->WritePrinter-->E

Jaylon Wang的专栏 1万+

顶刊论文引言用AI怎么写?借助Gemini 3 Pro结合四段式写出逻辑清晰的Introduction

写研究目标时,先明确研究问题,直接回应前文提到的研究缺口,如 “This study aims to investigate whether X modulates Y via the Z pathway in human cells.”然后再提出你的研究假设,当理论依据清晰时,可以用如 “We hypothesized that inhibiting X would rescue Y deficiency in this model.”的句子点出研究目标。要求:1)明确陈述本研究拟解决的核心科学问题;

智能AI让学术科研更容易 181

调用api弹出打印机属性对话框

调用api弹出打印机属性对话框 特别备注:需要引用单元 winspool Author:vitoriatang From:Internet .NETFramework封装了很多关于打印的对话框,比如说PrintDialog,PageSetupDialog. 但是有的时候我们还需要关心打印机属性对话框,那么就可以调用API来解决这个问题。 有几个API函数与之相关 PrinterProperties DocumentProperties OpenPrinter ClosePrinter 逐一介绍 print

wnjnfn的博客 814

AgentScope Java 2.0 项目实战:从零构建企业级自主Coding Agent

本文基于 AgentScope Java 框架,完整拆解两个生产级 AI Agent 项目的从零开发全过程。其一是企业级自主编码机器人(agentscope-codingagent),支持 Issue→PR 自动实现、PR Code Review、Docker 沙箱隔离执行与多通道接入;其二是个人 AI 助手管理平台(agentscope-paw),采用 Spring Boot + React 全栈架构,支持多 Agent、技能市场与多 IM 通道。

program哲学 839

探索数据库领域 SQL 的 JSON 数据处理技巧

在当今数字化时代,JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,被广泛应用于各种领域,如 Web 应用、移动应用、大数据处理等。数据库作为数据存储和管理的核心,需要具备处理 JSON 数据的能力。本文章的目的在于深入探索 SQL 语言在数据库中处理 JSON 数据的技巧,涵盖从基础的 JSON 数据查询到复杂的 JSON 数据操作,帮助读者全面了解和掌握 SQL 处理 JSON 数据的方法。

2502_91592937的博客 924

打印系统开发(30)——调用API弹出打印机属性对话框

调用api弹出打印机属性对话框 一、printerProperties 二、documentProperties 三、openPrinter 四、closePrinter 五、samplecodes:(例子代码:) 1.声明API函数 2.调用DocumentProperties 3.调用PrinterProperties 调用api弹出打印机属性对话框 Author:vito...

qq_34573534的博客 1134

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

显示打印机属性对话框 --API函数

 Dim printerName As String = m_printDoc.PrinterSettings.PrinterName            If String.IsNullOrEmpty(printerName) = False Then                Dim hPrinter As IntPtr                If OpenPrint

hjfjoy的专栏 1380

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

如何用vb(API)代码设置不规则打印纸尺寸?

http://support.microsoft.com/support/kb/articles/q282/4/74.asp Module1.bas Option Explicit Public Enum PrinterOrientationConstants OrientPortrait = 1 Orie...

weixin_30639719的博客 147

XcvData小应用

 HANDLE hXcv; PRINTER_DEFAULTS pPrintDef; memset(&pPrintDef,0,sizeof(pPrintDef)); pPrintDef.DesiredAccess = SERVER_ACCESS_ADMINISTER;  WCHAR pszPortName[512]=L"ppfileporttt"; WCHAR dwReturn[512]; DWOR

sun的专栏 2879

设置打印机

void WINAPI PrintSet(LPCTSTR PrinterName, DWORD PaperSize, DWORD Height, DWORD Width, LPDWORD ret_code, LPTSTR errortext){ DEVMODE* lv_devmode; DEVMODE* lv_devmode_2; PRINTER_INFO_2

蜗牛 1283

直接打印RAW文件到打印机(一)

http://support.microsoft.com/kb/322091/zh-cn?spid=548&sid=348#top 好像是微软官方的支持给出了VC#的解决办法,可以运行,也不报错,就是没啥反应啊! 基本调用函数过程是:二进制文件, OpenPrinter-->StartDocPrinter-->StartPagePrinter-->WritePrinter-->E

zhuameng.com的博客 8047

如何取得LPT端口打印机支持的 最小和最大页面大小

由于工作需要,经朋友 (DS,FT)指点,先贴工作中代码,至于使用USB端口打印机,日后再说。  TPrinterSett = record    PrinterName: string;    MinPaperSize: TPoint;    MaxPaperSize: TPoint;  end;private  FPrnSett: TPrinterSett; uses  Print

swayi21的专栏 1389

java弹出窗口api_调用API弹出打印机属性对话框

调用api弹出打印机属性对话框Author:vitoriatangFrom:Internet.NETFramework封装了很多关于打印的对话框,比如说PrintDialog,PageSetupDialog.但是有的时候我们还需要关心打印机属性对话框,那么就可以调用API来解决这个问题。有几个API函数与之相关PrinterPropertiesDocumentPropertiesOpenPri...

weixin_29364297的博客 420

VC++ 判断打印机状态

// 判断打印机是否正在打印 HRESULT GetPrinterStatus(CString strPrinterName) { HRESULT hRet = E_FAIL; HANDLE hPrinter; if (!OpenPrinter(strPrinterName.GetBuffer(0), &hPrinter, NULL)) return hRet; DWORD...

老狼的专栏 1442
上一篇: 转帖]在 C++Builder 工程里使用 Visual C++ DLL
下一篇: EnumForms 函数枚举指定打印机支持有所有页形.
Persistent8813
博客等级 码龄23年 7粉丝 4原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值