Win32 API 枚举打印机
主要是使用EnumPrinters函数;
#include <windows.h>
#include <Winspool.h>int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{/* TODO: Place code here.*/DWORD dwNeeded, dwReturned ;PRINTER_INFO_4 * pinfo4 ;PRINTER_INFO_5 * pinfo5 ; if (GetVersion () & 0x80000000) // Windows 98{EnumPrinters (PRINTER_ENUM_DEFAULT, NULL, 5, NULL,0, &dwNeeded, &dwReturned) ;pinfo5 = malloc (dwNeeded) ;EnumPrinters (PRINTER_ENUM_DEFAULT, NULL, 5, (PBYTE) pinfo5,dwNeeded, &dwNeeded, &dwReturned) ;MessageBox(NULL,pinfo5->pPrinterName,"打印机枚举",MB_OK);free (pinfo5) ;}else // Windows NT{EnumPrinters (PRINTER_ENUM_LOCAL, NULL, 4, NULL,0, &dwNeeded, &dwReturned) ;pinfo4 = malloc (dwNeeded) ;EnumPrinters (PRINTER_ENUM_LOCAL, NULL, 4, (PBYTE) pinfo4,dwNeeded, &dwNeeded, &dwReturned) ;MessageBox(NULL,pinfo4->pPrinterName,"打印机枚举",MB_OK);free (pinfo4) ;}return 0;
}
构建;在CFree构建,不能连接,出现下列错误;
undefined reference to `EnumPrintersA@28'
在VC6构建,可以构建成功,但是运行程序,不会显示任何内容;
可能此函数在当前操作系统已经失效;
EnumPrinters第一个参数:
PRINTER_ENUM_LOCAL 枚举本地打印机
PRINTER_ENUM_NAME 枚举由name参数指定的打印机。其中的名字可以是一个供应商、域或服务器。
PRINTER_ENUM_SHARE 枚举共享打印机(必须同其他常数组合使用)
PRINTER_ENUM_CONNECTIONS 枚举网络连接列表中的打印机
PRINTER_ENUM_NETWORK 枚举通过网络连接的打印机。
PRINTER_ENUM_REMOTE 枚举通过网络连接的打印机和打印服务器。
dwNeeded, dwReturned:结构体需要的字节数,返回的字节数;
函数的调用方式:先调用一次EnumPrinters,获得需要的字节数;然后用此字节数分配内存给pinfo5;然后再调用EnumPrinters,把返回结果放入pinfo5;
PRINTER_INFO_4 和 PRINTER_INFO_5 结构体,用于存放枚举结果;两个结构体用于不同的操作系统版本;其 pPrinterName 成员是打印机名字;
PRINTER_INFO_4 包含3个成员;
pPrinterName
Pointer to a null-terminated string that specifies the name of the printer (local or remote).
pServerName
Pointer to a null-terminated string that is the name of the server.
Attributes
Specifies information about the returned data.
PRINTER_INFO_5多了几个成员;
typedef struct _PRINTER_INFO_5 {
LPTSTR pPrinterName;
LPTSTR pPortName;
DWORD Attributes;
DWORD DeviceNotSelectedTimeout;
DWORD TransmissionRetryTimeout;
} PRINTER_INFO_5, *PPRINTER_INFO_5;
相关结构体和函数的微软文档链接在此;
https://docs.microsoft.com/en-us/windows/win32/printdocs/printer-info-5
Win32 API 枚举打印机相关推荐
- C++调用win32 API操作打印机实现驱动打印
方法说明: 1.s2w(string &content, int length):将string类型的变量转换为wchar_t*类型,用于调用TextOut()方法时传参,其中length为需 ...
- python枚举窗口句柄_如何使用 WIN32 API 枚举窗口?
枚举顶层(top-level)窗口 枚举桌面顶层窗口相对于枚举进程来说可能要容易一些.枚举桌面顶层窗口的方法是用 EnumWindows() 函数.不要用 GetWindow()来创建窗口列表,因为窗 ...
- 使用 Win32 API 枚举应用程序
概要 一个常见的编程任务是枚举所有运行的"应用程序".Windows 任务管理器就是一个很好的例子.它用两种方式列出"应用程序".任务管理器的第一个选项卡列出桌 ...
- win32 打印机任务管理的 node 模块 (3)详解Win32 Spooler API 获取打印机列表及状态
上篇讲了如何写一个 node addon,这篇开始讲述如何调用 Win32 Spooler API 实现打印的完整功能.项目的代码在 https://gitee.com/csling/win32-pr ...
- winaip文档服务器打印,使用 Win32 API 将原始数据发送到打印机
使用 Win32 API 将原始数据发送到打印机 02/28/2020 本文内容 本文介绍如何使用 Win32 API 将原始数据发送到打印机. 原始产品版本: Windows API 原始 KB ...
- C++ 纯WIN32 API编程 悦读器实战示例
/* 最后修改:2020-09-21 14:04 <C++编程示例大全> 作者:张国鹏 本例功能:C++ 纯WIN32 API编程 悦读器实战示例 软件下载:http://lovegp.c ...
- Win32 API 打印
重温 Win32 API ----- 截屏指定窗口并打印 http://blog.csdn.net/smstong/article/details/42082039 朋友说在一个VC++6.0开发的项 ...
- 在windows下对android进行实时快速录屏和模拟点击(二)——win32 API操控模拟器
从上一节在windows下对android进行实时快速录屏和模拟点击(一)--使用adb命令行当中,描述了适合于所有情况下的通用方法--adb.而通用方法的最大缺点就是:速度非常慢,在有些时候是远远不 ...
- C#调用Win32 api学习总结
转载:https://blog.csdn.net/bcbobo21cn/article/details/50930221 从.NET平台调用Win32 API Win32 API可以直接控制Micro ...
最新文章
- 零基础怎么学UI设计
- 专访阿里云 Serverless 负责人:无服务器不会让后端失业
- Matlab多项式回归实现
- BCrypt管理员登录密码验证
- java匿名类对象的坏处_java匿名内部类的使用注意事项
- 查询出各个学科的前3名的同学信息的Sql
- 从 Angular 移植到 React,代码量减少了 20%
- android 获得资源图片,快速获取app(ios和安卓)资源图片
- H5营销互动小游戏源码
- VCL语法教程——5.手持式1311编程器的支持
- 质量与效能 | 11月29日TF84
- it行业计算机考试认证全集
- ICC II 3 从create_ndm开始design setup
- Python与OpenCV(三)——基于光流法的运动目标检测程序分析
- Java 数据转换/进制转换 工具类
- 怎么查看显卡算力(附nvidia显卡算力表)
- 【神州网信】【win10】相机等权限的开启方法
- android arp工具,Android内网攻击防御安全测试工具(开源)
- 英特尔实感SDK 代码示例
- linux gnu grub,GNU GRUB命令的使用方法与GNU GRUB详细介绍
热门文章
- opencv像素基本操作及图像遍历at
- 宁波工商职业技术学院计算机分数线,浙江工商职业技术学院历年分数线 2021浙江工商职业技术学院录取分数线...
- 复旦计算机考研19年录取线,2019年复旦大学考研复试分数线已公布
- c# excel导出png_C#与Halcon联合编程步骤
- 基本数据类型和字符串类型的转换
- JavaScript 技术篇-js获取document的几种方式,js获取dom元素的常用方法。
- C++ leetcode 21. 合并两个有序链表 将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
- 匹配printf()说明符的类型
- android用openGl ES绘制任意方程的三维空间图形
- 利用神经网络 遗传算法求得函数极小极大值