主要是使用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 枚举打印机相关推荐

  1. C++调用win32 API操作打印机实现驱动打印

    方法说明: 1.s2w(string &content, int length):将string类型的变量转换为wchar_t*类型,用于调用TextOut()方法时传参,其中length为需 ...

  2. python枚举窗口句柄_如何使用 WIN32 API 枚举窗口?

    枚举顶层(top-level)窗口 枚举桌面顶层窗口相对于枚举进程来说可能要容易一些.枚举桌面顶层窗口的方法是用 EnumWindows() 函数.不要用 GetWindow()来创建窗口列表,因为窗 ...

  3. 使用 Win32 API 枚举应用程序

    概要 一个常见的编程任务是枚举所有运行的"应用程序".Windows 任务管理器就是一个很好的例子.它用两种方式列出"应用程序".任务管理器的第一个选项卡列出桌 ...

  4. win32 打印机任务管理的 node 模块 (3)详解Win32 Spooler API 获取打印机列表及状态

    上篇讲了如何写一个 node addon,这篇开始讲述如何调用 Win32 Spooler API 实现打印的完整功能.项目的代码在 https://gitee.com/csling/win32-pr ...

  5. winaip文档服务器打印,使用 Win32 API 将原始数据发送到打印机

    使用 Win32 API 将原始数据发送到打印机 02/28/2020 本文内容 本文介绍如何使用 Win32 API 将原始数据发送到打印机. 原始产品版本:  Windows API 原始 KB ...

  6. C++ 纯WIN32 API编程 悦读器实战示例

    /* 最后修改:2020-09-21 14:04 <C++编程示例大全> 作者:张国鹏 本例功能:C++ 纯WIN32 API编程 悦读器实战示例 软件下载:http://lovegp.c ...

  7. Win32 API 打印

    重温 Win32 API ----- 截屏指定窗口并打印 http://blog.csdn.net/smstong/article/details/42082039 朋友说在一个VC++6.0开发的项 ...

  8. 在windows下对android进行实时快速录屏和模拟点击(二)——win32 API操控模拟器

    从上一节在windows下对android进行实时快速录屏和模拟点击(一)--使用adb命令行当中,描述了适合于所有情况下的通用方法--adb.而通用方法的最大缺点就是:速度非常慢,在有些时候是远远不 ...

  9. C#调用Win32 api学习总结

    转载:https://blog.csdn.net/bcbobo21cn/article/details/50930221 从.NET平台调用Win32 API Win32 API可以直接控制Micro ...

最新文章

  1. 零基础怎么学UI设计
  2. 专访阿里云 Serverless 负责人:无服务器不会让后端失业
  3. Matlab多项式回归实现
  4. BCrypt管理员登录密码验证
  5. java匿名类对象的坏处_java匿名内部类的使用注意事项
  6. 查询出各个学科的前3名的同学信息的Sql
  7. 从 Angular 移植到 React,代码量减少了 20%
  8. android 获得资源图片,快速获取app(ios和安卓)资源图片
  9. H5营销互动小游戏源码
  10. VCL语法教程——5.手持式1311编程器的支持
  11. 质量与效能 | 11月29日TF84
  12. it行业计算机考试认证全集
  13. ICC II 3 从create_ndm开始design setup
  14. Python与OpenCV(三)——基于光流法的运动目标检测程序分析
  15. Java 数据转换/进制转换 工具类
  16. 怎么查看显卡算力(附nvidia显卡算力表)
  17. 【神州网信】【win10】相机等权限的开启方法
  18. android arp工具,Android内网攻击防御安全测试工具(开源)
  19. 英特尔实感SDK 代码示例
  20. linux gnu grub,GNU GRUB命令的使用方法与GNU GRUB详细介绍

热门文章

  1. opencv像素基本操作及图像遍历at
  2. 宁波工商职业技术学院计算机分数线,浙江工商职业技术学院历年分数线 2021浙江工商职业技术学院录取分数线...
  3. 复旦计算机考研19年录取线,2019年复旦大学考研复试分数线已公布
  4. c# excel导出png_C#与Halcon联合编程步骤
  5. 基本数据类型和字符串类型的转换
  6. JavaScript 技术篇-js获取document的几种方式,js获取dom元素的常用方法。
  7. C++ leetcode 21. 合并两个有序链表 将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
  8. 匹配printf()说明符的类型
  9. android用openGl ES绘制任意方程的三维空间图形
  10. 利用神经网络 遗传算法求得函数极小极大值