spooler API研究——获取所有本地和网络打印机
2016-12-13 13:36
701 查看
直接上代码:
需包含头文件
#include "Windows.h"
#include <WinSpool.h>
#pragma comment(lib, "Winspool.lib")
需包含头文件
#include "Windows.h"
#include <WinSpool.h>
#pragma comment(lib, "Winspool.lib")
int findPrint() { DWORD i ; DWORD dwSize; DWORD dwPrinters; LPHANDLE phPrinter; DWORD dwFlags = PRINTER_ENUM_CONNECTIONS | PRINTER_ENUM_LOCAL ; //获取数据长度等信息 EnumPrinters (dwFlags, NULL, 5, NULL, 0, &dwSize, &dwPrinters); if (!(pPrinters = (LPPRINTER_INFO_5) LocalAlloc (LPTR, dwSize + 4))) {//申请存储内存 printf("EnumPrinters:%d\n",GetLastError()); return -1; } if (!EnumPrinters (dwFlags, NULL, 5, (LPBYTE) pPrinters, dwSize, &dwSize, &dwPrinters)) {//枚举所有当地和远程打印机 printf("EnumPrinters:%d\n",GetLastError()); return -1; } printf("total prints = %d\n",dwPrinters); bool blFound = false; for (i = 0; i < dwPrinters; i++) {//输出打印机名称 printf("Find Printer #[%d/%d]: %s\n", i+1, dwPrinters, pPrinters->pPrinterName); if(strstr(pPrinters->pPrinterName,"HP")) {//根据打印机名称获取指定打印机,比如打印机名称含HP blFound = true; break; } pPrinters++; } return blFound ? 0 : -1 ; }
相关文章推荐
- 从源码安装Mysql/Percona 5.5
- 如何重装TCP/IP协议
- Windows 8 官方高清壁纸欣赏与下载
- 谁是桌面王者?Win PK Linux三大镇山之宝
- 对《大家都在点赞 Windows Terminal,我决定给你泼一盆冷水》一文的商榷
- Windows Clang开发环境备忘
- 从Windows系统下访问Linux分区相关软件
- 对《大家都在点赞 Windows Terminal,我决定给你泼一盆冷水》一文的商榷
- Windows下搭建本地SVN服务器
- 使用Windows原生命令一键清空剪贴板
- windows用windeployqt发布qt quick application程序
- 利用开源软件打造自己的全功能远程工具
- Windows 8虚拟机不能全屏的解决方法
- 虚拟化基础架构Windows 2008篇之1-虚拟化基础服务概述
- 虚拟化基础架构Windows 2008篇之5-安装Windows部署服务
- 虚拟化基础架构Windows 2008篇之7-添加其他操作系统的安装镜像
- 虚拟化基础架构Windows 2008篇之9-配置Windows部署服务