C++:删除打印机队列

2024-04-10

我正在尝试从打印机中删除队列中的所有文件。我发现这看起来很简单。

我尝试使用下面的代码删除队列。它可以编译,但 SetPrinter 返回 false。我收到的错误消息是 5,我尝试使用该方法将其解码为“正常”错误消息从这个问题 https://stackoverflow.com/questions/3006229/get-a-text-from-the-error-code-returns-from-the-getlasterror-function。但我无法编译它,因为 STR_ELEMS 未定义。在谷歌上搜索“STR_ELEMS未定义”但陷入了死胡同。

有人可以帮我解码错误消息并删除打印机队列吗?

BOOL bStatus = false;
HANDLE     hPrinter = NULL;
DOC_INFO_1 DocInfo;

bStatus = OpenPrinter((LPTSTR)_T("CN551A"), &hPrinter, NULL);

if(bStatus) {

    DWORD dwBufsize=0;

    GetPrinterA(hPrinter, 2, NULL, 0, &dwBufsize); // Edit: Returns false

    PRINTER_INFO_2* pinfo = (PRINTER_INFO_2*)malloc(dwBufsize);
    long result = GetPrinterA(hPrinter, 2, 
        (LPBYTE)pinfo, dwBufsize, &dwBufsize);

    if ( pinfo->cJobs==0 ) // Edit: pinfo->cJobs is not 0
    {
        printf("No printer jobs found.");
    }
    else
    {
        if ( SetPrinter(hPrinter, 0, 0, PRINTER_CONTROL_PURGE)==0 )
            printf("SetPrinter call failed: %x\n", GetLastError() );
        else printf("Number of printer jobs deleted: %u\n",
            pinfo->cJobs);
    }

    ClosePrinter( hPrinter );

}

我的内容包括:

#include <windows.h>
#include <winspool.h>

错误代码5表示“访问被拒绝”。 (系统错误代码 http://msdn.microsoft.com/en-us/library/windows/desktop/ms681382%28v=vs.85%29.aspx)

尝试以管理员权限运行。

从返回值格式化可打印的错误消息GetLastError, use FormatMessage像这样的东西:

  TCHAR buffer[256];
  if (0 == FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 0,
           GetLastError(), 0, buffer, 256, 0)) {
    // FormatMessage failed.
  }

另外,您可以尝试通过PRINTER_DEFAULTS结构为OpenPrinter,也许像这样:

PRINTER_DEFAULTS PrnDefs;
PrnDefs.pDataType = "RAW";
PrnDefs.pDevMode = 0;
PrnDefs.DesiredAccess = PRINTER_ALL_ACCESS;

bStatus = OpenPrinter((LPTSTR)_T("CN551A"), &hPrinter, &PrnDefs);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++:删除打印机队列 的相关文章

  • OpenCv读/写视频色差

    我试图简单地使用 openCV 打开视频 处理帧并将处理后的帧写入新的视频文件 我的问题是 即使我根本不处理帧 只是打开视频 使用 VideoCapture 读取帧并使用 VideoWriter 将它们写入新文件 输出文件看起来比输入更 绿
  • 我的线程图像生成应用程序如何将其数据传输到 GUI?

    Mandelbrot 生成器的缓慢多精度实现 线程化 使用 POSIX 线程 Gtk 图形用户界面 我有点失落了 这是我第一次尝试编写线程程序 我实际上并没有尝试转换它的单线程版本 只是尝试实现基本框架 到目前为止它是如何工作的简要描述 M
  • 使用具有现有访问令牌的 Google API .NET 客户端

    用例如下 移动应用程序正在通过 Google 对用户进行身份验证 并且在某些时候 我们需要将用户的视频发布到他的 YouTube 帐户 出于实际原因 实际发布应该由后端完成 已经存储在那里的大文件 由于用户已经通过应用程序的身份验证 因此应
  • C#动态支持吗?

    看完之后这个帖子 https stackoverflow com questions 2674906 when should one use dynamic keyword in c sharp 4 0k和链接 我还有 2 个问题 问题 1
  • 为什么我不能用 `= delete;` 声明纯虚函数?

    Intro 纯虚函数使用通用语法声明 virtual f 0 然而 自 c 11 以来 有一种方法可以显式地传达non existence 特殊 成员函数的 Mystruct delete eg default constructor Q
  • C++:重写已弃用的虚拟方法时出现弃用警告

    我有一个纯虚拟类 它有一个纯虚拟方法 应该是const 但不幸的是不是 该接口位于库中 并且该类由单独项目中的其他几个类继承 我正在尝试使用这个方法const不会破坏兼容性 至少在一段时间内 但我找不到在非常量方法重载时产生警告的方法 以下
  • POCO HTTPSClientSession 发送请求时遇到问题 - 证书验证失败

    我正在尝试使用 POCO 库编写一个向服务器发出 HTTPS 请求的程序 出于测试目的 我正在连接到具有自签名证书的服务器 并且我希望允许客户端进行连接 为了允许这种情况发生 我尝试安装InvalidCertificateHandler这是
  • IronPython:没有名为 json 的模块

    我安装了 IronPython 我的 python 文件如下所示 import sys print sys version import json 运行它的代码 var p Python CreateEngine var scope p C
  • Qt 创建布局并动态添加小部件到布局

    我正在尝试在 MainWindow 类中动态创建布局 我有四个框架 它们是用网格布局对象放置的 每个框架都包含一个自定义的 ClockWidget 我希望 ClockWidget 对象在调整主窗口大小时相应地调整大小 因此我需要将它们添加到
  • Azure 事件中心 - 按顺序接收事件

    我使用下面的代码从 Azure Event Hub 接收事件 https learn microsoft com en us azure event hubs event hubs dotnet framework getstarted s
  • 如何重置捕获像素的值

    我正在尝试创建一个 C 函数 该函数返回屏幕截图位图中每四个像素的 R G 和 B 值 这是我的代码的一部分 for int ix 4 ix lt 1366 ix ix 4 x x 4 for int iy 3 iy lt 768 iy i
  • 当“int”处于最大值并使用 postfix ++ 进行测试时,代码定义良好吗?

    示例 未定义行为的一个示例是整数溢出的行为 C11dr 3 4 3 3 int溢出是未定义的行为 但这是否适用于存在循环的以下内容 并且不使用现在超出范围的副作用i 特别是 这是否后缀增量规格帮助 结果的值计算在副作用之前排序 更新操作数的
  • System.Runtime.InteropServices.COMException(0x80040154):[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在 C 项目中遇到异常 System Runtime InteropServices COMException 0x80040154 检
  • g++ 对于看似不相关的变量“警告:迭代...调用未定义的行为”

    考虑以下代码strange cpp include
  • strcmp 给出分段错误[重复]

    这个问题在这里已经有答案了 这是我的代码给出分段错误 include
  • 什么是 __declspec 以及何时需要使用它?

    我见过这样的例子 declspec在我正在阅读的代码中 它是什么 我什么时候需要使用这个构造 这是 Microsoft 对 C 语言的特定扩展 它允许您使用存储类信息来赋予类型或函数属性 文档 declspec C https learn
  • 双精度类型二维多维数组的 pinvoke 编组作为 c# 和 c++ 之间的输入和输出

    我有以下我正在尝试解决的双物质类型的 2d 多维数组的 c 和 c pinvoke 编组 我已经查看了以下热门内容以获得我目前拥有的内容使用双精度数组进行 P Invoke 在 C 和 C 之间编组数据 https stackoverflo
  • WinRT 定时注销

    我正在开发一个 WinRT 应用程序 要求之一是应用程序应具有 定时注销 功能 这意味着在任何屏幕上 如果应用程序空闲了 10 分钟 应用程序应该注销并导航回主屏幕 显然 执行此操作的强力方法是在每个页面的每个网格上连接指针按下事件 并在触
  • Googletest:如何异步运行测试?

    考虑到一个包含数千个测试的大型项目 其中一些测试需要几分钟才能完成 如果按顺序执行 整套测试需要一个多小时才能完成 通过并行执行测试可以减少测试时间 据我所知 没有办法直接从 googletest mock 做到这一点 就像 async选项
  • 错误:无效使用不完整类型“类 Move”/未定义对 Move::NONE 的引用

    拜托 我不知道为什么这个简单的代码被拒绝 它给了我 2 个编译错误 请帮帮我 I use 代码 块 20 03 我的编译器是GNU GCC 移动 hpp class Move public Move Move int int public

随机推荐

  • Rails 4 中的 autoload_paths 与 eager_load_paths 令人困惑

    我读了一篇关于 Rails load paths 的文章 这里是link http hakunin com rails3 load paths 但是 我仍然对两者之间的区别感到困惑autoload paths and eager load
  • Spring不接受POST参数,除非@RequestParam“required = false”

    我正在运行 Spring 3 1 2 应用程序 我有一个带有多种方法的 RESTful servlet GET 方法运行得非常好 PathVariables匹配 响应根据 Accept 标头正确编组为 JSON 或 XML 等等 100 成
  • WPF:如何以任意角度旋转 BitmapSource

    好的 我尝试过这个 TransformedBitmap tbm new TransformedBitmap myBitmapSource new RotateTransform angle return tbm 但这不适用于 90 度倍数以
  • 为暂停的订阅纠正 paypal IPN 变量

    如果按月付费订阅者的信用卡已过期 而 PayPal 尝试获取资金失败 3 次 则该用户将被 PayPal 暂停 我正在尝试更新我的 PHP 脚本 以便在这种情况下数据库中发生正确的更改 我研究了 PayPal 文档 但无法找到关于一旦用户帐
  • 放弃所有本地更改并返回到最后拉取的版本

    我如何在 git 中放弃所有本地更改 提交并返回到最后拉取的版本 命令必须位于一个字符串 字段 中 You can reset https git scm com book en v2 Git Tools Reset Demystified
  • 在 Spring Boot 中转义 Yaml 中的 Map 键中的点

    我有以下 yml 配置 foo bar com a b baz com a c 通过以下类 Spring 尝试使用键 bar 和 baz 注入映射 将点视为分隔符 public class JavaBean private Map
  • 如何在 log4j2 中生成标题行

    在 log4j 中 我们有时会创建第二个记录器并向其输出 CSV 数据 作为应用程序的指标监视 与我们用于调试等的普通日志相反 这些数据很容易导入和绘制图表 在旧的 log4j 中 我们通过子类化 PatternLayout 覆盖 head
  • 如何找到“无法加载‘xxx.dll’导入的过程”的来源。例外?

    过去一周我一直在追求这个例外 情况是 我有一个用 C 编写并在 Visual Studio 2010 中构建的应用程序 该应用程序包含一个 DLL 它是非托管代码库的包装器 非托管代码是用 C 编写的 并在 Visual Studio 20
  • 如何将系统变量值传递给执行 SQL 任务中的 SQL 语句?

    SSIS 2008 非常简单的任务 我想检索系统变量并在 SQL INSERT 中使用它 我想检索的值System MachineName并在插入语句中使用它 使用声明INSERT INTO MYLOG COL1 SELECT System
  • C++ - 在文本文件中查找和替换(标准系统库)

    我正在寻找一些建议 我的情况 应用程序适用于文本本地文件 文件中的某处有这样的标签 correct TEXT 不幸的是 之间可以有无限的空格correct and TEXT 获得的文本正在功能测试中 可能会被替换 更改必须存储在文件中 co
  • 更改列表视图中文本视图的可见性

    我有一个列表视图 它由来自单独布局文件的两个文本视图组成 我用一个BaseAdapter从 JSON 文件构建列表 我希望第一个文本视图 标题 可单击 如果单击它会显示第二个文本视图 文本 如果再次单击它会隐藏它 当我使用onClick a
  • kibana server.basePath 结果为 404

    我在 RHEL 7 2 上运行 kibana 4 4 1 当 kibana yml 文件不包含设置时一切正常server basePath Kibana 成功启动并吐出消息 info listening Server running at
  • 在哪里可以找到 PHP 的错误日志文件?

    在哪里可以找到错误日志文件 我需要检查它们以解决安装后显示的内部服务器错误suPHP https wiki archlinux org title SuPHP 您可以使用lsof https en wikipedia org wiki Ls
  • Asterisk AGI:如何获取或设置全局变量的值?

    我使用 Asterisk 1 8 和 PHP 来编写 AGI 脚本 EDIT 我正在努力从 AGI PHP 脚本中设置和获取全局变量的值 我可以设置通道变量 但不能设置全局变量 使用 PHPAGI 库 Tried Set varname v
  • Puppeteer 在非无头模式下打开一个空选项卡

    运行 puppeteer npm 的最新版本 0 13 0 并将参数传递给 puppeteer launch headless false chrome 以空页面作为第一个选项卡打开 并从第二个选项卡中的脚本打开实际页面 const pag
  • 尝试调整 2fs EB 卷大小失败 [已关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有一个 200GB 的 EBS 卷 正在尝试增加可用空间 我按照以下说明进行操作 http www hellersoftware com
  • Swift:通过 Twitter 分享文本

    所以基本上我正在制作一个事件应用程序 一切都很顺利 只是将活动分享到了 Twitter 我已经在互联网上搜索过 但我得到的只是使用我不想要的 Twitter 的本机应用程序 我想使用浏览器发推文 我已经实现了这个方法用于FB共享 任何想法都
  • terraform 资源创建 - this 关键字

    我在几个例子中发现了一种模式terraform代码在Github resource aws vpc this 我想知道关键字如何this与命名资源相比 提供了特殊的优势 我找不到哈希公司文档关于this关键词 https github co
  • 正则表达式:仅匹配一次

    我有一个包含多个 IP 地址和一些随机内容的字符串 例如像这样的 21 Jun 2018 01 15 38 0000 188 79 169 152 157 52 69 50 443 GET 157 52 69 30 157 52 69 10
  • C++:删除打印机队列

    我正在尝试从打印机中删除队列中的所有文件 我发现这看起来很简单 我尝试使用下面的代码删除队列 它可以编译 但 SetPrinter 返回 false 我收到的错误消息是 5 我尝试使用该方法将其解码为 正常 错误消息从这个问题 https