检查是否连接了打印机

2024-02-12

Windows 中有没有一种方法(在 Windows CE 中工作)来检查打印机是否已连接并与 C++ 中的 LPT1 进行通信?


[Edit]更多信息:

我们目前正在使用通用 Windows CE 打印机驱动程序 -pcl.dll- 通过将其传递到CreateDC,获取打印机的 DC。

我们不能打电话PrintDlg() http://msdn.microsoft.com/en-us/library/ms646940%28VS.85%29.aspx显示打印对话框,因为它是“看起来太复杂了”但我们也不能用PD_RETURNDEFAULT http://msdn.microsoft.com/en-us/library/ms646843%28VS.85%29.aspx因为我们不想使用默认打印机。所以,我们手动设置一个DEVMODE http://msdn.microsoft.com/en-us/library/dd183565%28VS.85%29.aspx要传递到的结构CreateDC.

获得 DC 后,我们调用GetDeviceCaps()获取打印机的信息(例如页宽等),然后StartPage()/EndPage()/ExtTextOut()打印。

但是,如果没有连接打印机,程序会冻结大约一分钟,然后再给出“中止/重试/失败?”对话框(我不知道这个过程中的哪一点被冻结)。当您尝试打印时,其他软件不会冻结,因此must是防止这种情况的一种方法...


当您在 Windows 中使用打印机时,您实际上永远不会直接使用端口,而是通过打印机驱动程序界面。这消除了如何通信的知识,并为您提供了一个对于所有打印机(无论品牌和端口如何)都相同的工具箱。

Windows API 为您提供了多种从驱动程序中提取额外信息的可能性。在我 14 年的打印机开发生涯中,微软从未添加过对丰富打印机状态的支持(尽管我不知道他们在 Windows 7 中是否改变了这一点)。我们和许多其他打印机开发人员一样必须扩展打印机驱动程序以向应用程序提供更多信息。

您应该询问您的打印机开发人员是否有 Windows CE 驱动程序。我不确定插入/拔出并行打印机时是否会生成 DEVICE_CHANGE 消息。它适用于 USB 打印机(无需在注册表中搞乱)。

您可以阅读有关打印子系统的更多信息here http://msdn.microsoft.com/en-us/library/ff686805(v=VS.85).aspx

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

检查是否连接了打印机 的相关文章

随机推荐

  • IOS 是否以任何方式支持 Active Directory?

    我知道这是一个非常普遍的问题 我不是在寻找代码或任何东西 即使是一个链接或简短的解释也会很好 特别是寻找一种从内部 IOS 应用程序浏览基于网络的活动目录的方法 使用云或电子邮件不是一个选择 可能吗 有一个IBMdeveloperWorks
  • 运行 Angular 编译器-cli (ngc);找不到模块“@angular/core”

    我尝试使用以下命令安装 Angular 编译器 cli ngc npm install angular compiler cli typescript angular platform server angular compiler 安装似
  • 如何使用 Firebase Auth 创建应用程序集成测试?

    我创建了一个 Flutter 应用程序 我的应用程序使用 Firebase Auth 我需要为我的应用程序创建集成测试 但如果需要输入登录名和密码 我不知道如何执行此操作 我是颤振新手 这对我来说是一个问题 我将不胜感激任何帮助 对于集成测
  • 是否可以传递立即调用的函数表达式的执行上下文

    考虑以下代码 function var a 5 var someFunc function function anotherFunc window myGlobalObj init function and somehow here I w
  • 无法在 gradle 文件中应用“android-reporting”

    当我把apply plugin android reporting 按照建议在我的项目级别 build gradle 文件中here https developer android com studio test command line
  • Notepad++ 在左侧显示打开的文件

    在 Notepad 中 有没有办法在左侧列表中显示当前打开的文件列表 而不是使用默认的选项卡视图 我希望它类似于 TextPad 显示当前打开的文件的方式 我指的不是允许我打开新文件的资源管理器 我只是不喜欢打开许多文件时顶部的选项卡 设置
  • 带有错误句柄的自定义验证 Ninja 表单

    我在 WordPress 安装中使用 Ninja Form 插件 我的表单有 3 个输入文本字段 在按下提交按钮后 我需要通过检查输入的值是否存在于我的数据库中的自定义表中来验证此输入之一 如果该值尚不存在 则不会发生任何情况 Ninja
  • Python argparse 条件要求

    如何设置 argparse 如下 if 2 is on the command line no other arguments are required if 2 is not on the command line 3 and 4 arg
  • Java 电子邮件监听器

    我遇到了 IdleManager 类和 watch 方法 它使 imap 文件夹保持打开状态 并且理论上正在监视新消息 但如何让它在新电子邮件到达时输出或通知 代码 public static void main String args t
  • 报表查看器.rdlc 如何传递参数?

    显然 我一直在 C Windows 表单中制作试算表报告 报告查看器 其中显示 帐户 的年度报告及其每个帐户中的应付总额 该报告具有假定的年度复利值 具体取决于用户的选择 ex Jan 1 2013 to Feb 1 2014 将会有一个复
  • IDEA 以及如何禁用 gradle 包装器生成?

    我是 IJ IDEA 和 Gradle KTS 的新手 我手动创建了 kts 并将其导入到 IJ 中 IDEA 已经生成了 gradle 包装器 但我不想要这个 如果我删除 gradle 包装器和关联的目录 IDEA 会提示我从 gradl
  • 有没有办法用 FireMonkey 添加提示或工具提示?

    我已经搜索过但找不到任何东西 有没有办法用 FireMonkey 添加提示或工具提示 是否有可用的组件可以实现此目的 理想情况下 我正在寻找这样的东西 标注类型工具提示 对于搁置此问题的版主 我正在寻找有关如何实现此目标的源代码行 而不是购
  • jQuery 验证插件:如何强制验证以前有效的字段?

    我正在使用 jQuery 验证插件来验证表单 您知道如何强制重新验证吗以前成功过 fields 我已使用以下检查尝试了 form 函数 这是在用户单击 提交 后执行的 if form1 validate form false formVal
  • 如何将 SVG 对象插入到带有链接的 HTML 中?

    我不想添加到 svg 的链接 这是不可能的 因为 svg 不是我提供的 但想添加一个链接 例如 a href img src foo svg a 只是这一次不是img but a object 这样我就可以包含一个 svg 它适用于某些浏览
  • 如何让Jqgrid冻结列自动换行

    我正在使用最新的 jqgrid 包 4 4 5 我想让标题栏自动换行 我读了奥列格answer https stackoverflow com questions 8686616 how can i get jqgrid frozen co
  • Python BeautifulSoup:通配符属性/id搜索

    我有这个 dates soup findAll div id date 但是 我需要 id 作为通配符搜索 因为id can be date 1 date 2 etc 您可以提供可调用作为过滤器 dates soup findAll div
  • 如何访问 rowdatabound 上的 gridview 列?

    我想在值为 1 时将 gridview 列的值更改为活动状态 我有类似的 gridview 列
  • 为什么在类中实现的 C# 接口方法必须是公共的?

    我有一个继承接口的类 接口成员方法在我的类中实现 没有访问修饰符 因此 默认情况下它是 private 我收到错误 无法实现接口成员 因为它不是公共的 为什么不允许 我不能覆盖可访问性吗 这是一个例子why能够覆盖可见性是没有意义的 int
  • 在调整大小时保存 NSWindow 大小并为用户关闭

    我注意到 OS X 上的所有应用程序似乎都会保存您设置的大小 下次打开它时 它通常处于相同的位置和大小 我正在制作一个应用程序 我注意到调整大小后 如果我再次启动应用程序 它的大小只是我在 Xcode 4 的 IB 中设置的大小 而不是我在
  • 检查是否连接了打印机

    Windows 中有没有一种方法 在 Windows CE 中工作 来检查打印机是否已连接并与 C 中的 LPT1 进行通信 Edit 更多信息 我们目前正在使用通用 Windows CE 打印机驱动程序 pcl dll 通过将其传递到Cr