首页 > 编程语言 >C++创建虚拟打印机

C++创建虚拟打印机

时间:2023-03-30 09:58:36浏览次数:43  
标签:打印机 NULL C++ 虚拟 Print PDF pi dism

最近有个需求需要对报告打印进行统一的管理,最终实现方案如下:

1、安装Microsoft Print To PDF虚拟打印机,该打印机可以将所有打印数据转换为PDF

2、通过Microsoft Print To PDF虚拟机参数复制一台新的虚拟打印机

3、创建打印输出端口,指定输出路径

4、设置新虚拟打印机的端口为新创建的端口。

 

安装Microsoft Print To PDF

Microsoft Print To PDF属于Windows可选功能,可以借助 dism.exe进行安装布署。如下:

1 dism /Online /Enable-Feature /FeatureName:"Printing-PrintToPDFServices-Features" /NoRestart /Quiet

 

使用CreateProcess函数执行dism.exe

 1 #include<Windows.h>
 2 #include<tchar.h>
 3 
 4 BOOL InstallMicrosoftPrintToPDF()
 5 {
 6     LPWSTR szCmd = _tcsdup(LR"(dism /Online /Enable-Feature /FeatureName:"Printing-PrintToPDFServices-Features" /NoRestart /Quiet)");
 7     STARTUPINFO si{};
 8     PROCESS_INFORMATION pi{};
 9     si.cb = sizeof(si);
10     auto nRet = CreateProcess(NULL, szCmd, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
11 
12     if (!nRet)
13     {
14         if (pi.hThread)
15         {
16             CloseHandle(pi.hThread);
17         }
18 
19         if (pi.hProcess)
20         {
21             CloseHandle(pi.hProcess);
22         }
23     }
24 
25     free(szCmd);
26     return nRet;
27 }

 

然后调用OpenPrinter函数打开打印机

 

标签:打印机,NULL,C++,虚拟,Print,PDF,pi,dism
From: https://www.cnblogs.com/zhaotianff/p/17271426.html

相关文章

  • matlab simulink 双馈风机调频,风电调频,风火水调频,虚拟惯性控制,下垂控制
    matlabsimulink双馈风机调频,风电调频,风火水调频,虚拟惯性控制,下垂控制参与系统一次调频的MatlabSimulink模型系统为三机九节点模型,所有参数已调好且可调,可直接运行,风电......
  • C/C++ 思考:策略模式在协议解析中的应用
    目录引出问题传统解析方式策略模式简介UML类图改进1:基于函数的代码结构改进改进2:基于对象的结构改进参考引出问题在基于消息包的通信协议中,通常会通过一个id或命令名来标......
  • c++实战开发程序
    非常感谢您的进一步提问,以下是一个对于实战开发小程序的更具体的建议:第1周实战开发小程序建议:写一个简单的计算器程序,要求包含加、减、乘、除四种基本运算,并进行错误处理......
  • 编写高效C++代码的一些方法
    1.使用基于range的for循环这是C++11中非常酷的特性,如果你想从头到尾迭代,这是最好的方法。usingnamespacestd;intmain(){vector<int>vec={0,1,2,3,4};......
  • C++ ndk编译器及编译脚本
    Gccg++clang编译器的区别GCC、G++和Clang都是常用的编译器,它们有以下区别:编译器的实现:GCC是GNUCompilerCollection的缩写,是由GNU项目开发的一款自由软件,G++是GCC......
  • windows10 安装 统信虚拟机 调试证卡打印机
    注意:   1 不能识别USB设备  服务VMwareUSBArbitrationService要开启   2USB兼容性选择3.1      3 usb.restrictions.defaultallow......
  • 75.c++运算符优先级
    优先级运算符结合律助记1::从左至右作用域2a++、a--、type()、type{}、a()、a[]、.、->从左至右后缀自增减、函数风格转型、函数调用、下标、成员......
  • C++标准库中的std::nth_leement
    std中的nth_element默认求的是数组中第n小的元素可以通过参数传入,求第n大的元素示例代码#include<algorithm>#include<iostream>#include<vector>usingna......
  • KVM 使用 Centos CLoud Image 安装虚拟机
    1下载镜像#资源地址:https://cloud.centos.org/centos/7/images/wgethttps://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud-2009.qcow2c2拷贝虚......
  • VM虚拟机安装centos7.9并docker启动showdoc
    一、准备工作安装VMwareworkstations16版本,这个不做过多的介绍下载centos64位dvd版的centos7.9的镜像文件创建虚拟机,此过程也不做过多的介绍,设置root密码的时候千万要......