Win32 API 打印不询问用户输入

Posted

技术标签:

【中文标题】Win32 API 打印不询问用户输入【英文标题】:Win32 API Print not asking user input 【发布时间】:2013-04-02 09:40:22 【问题描述】:

我们有类似Secure Print.

我去我的控制面板>>打印机和设备>>打印机>>打印机首选项在这里我分配一个4位数的密码..

我从 Word 或 Excel 进行打印...转到打印机 >> 检索作业 >> 选择我的打印作业并输入我的密码。

只有这样我的作业才会被打印出来。

现在我们的应用程序有两个打印源代码

当从我们的应用程序触发打印时,打印会立即完成....即它不会将我的工作存储在队列中并等待 pin ...而是立即打印

一些源代码

bResult = OpenPrinter(szDevice, &hPrinter, NULL);
// szDevice contains printer name
startDocPrtInfo.pDocName = msg;
startDocPrtInfo.pOutputFile = NULL;
startDocPrtInfo.pDatatype = "RAW";
bPrntErr = (StartDocPrinter(hPrinter,1,(LPBYTE)&startDocPrtInfo) == 0);

WritePrinter(hPrinter, &buffer[2], i, &cnt);
EndDocPrinter(hPrinter);
ClosePrinter(hPrinter);

代码正在打印给定的文档,但它不等待用户输入他的密码

问题 如何让上面的代码像其他应用程序一样等待?我在这里缺少一些设置吗?

给你更多的细节。

我们在同一个应用程序中有另一个 Print 子例程,它的工作方式与我们的期望一样......即等待用户输入他的 PIN 码

但是子程序使用 TextOut 方法而不是 WritePrinter

知道为什么当我使用 WritePrinter 打印方法时打印不等待吗?

感谢期待CP

【问题讨论】:

当您像这样直接打印到打印机时,您绕过了正常的打印管道。这确实是一种在没有某种自定义打印监视器意识到它的情况下打印东西的好方法,因此它可以向特定用户收取打印页面的费用。您需要与 LAN 管理员交谈以了解执行此操作的软件类型,以便您可以联系供应商寻求支持。 该功能来自打印机。我从打印机首选项对话框中分配了一个 4 位 PIN。一些打印机称之为存储打印等......所以我相信它是一种打印功能,而不是一些外部软件......此外,我们的 TextOut 代码工作正常 "来自打印机" == "外部软件"。 Microsoft 不编写打印机驱动程序。当您使用 TextOut 时,您没有使用 WritePrinter,它会像往常一样通过打印机驱动程序。这无疑是避免这种麻烦的最佳方法。 【参考方案1】:

我解决了这个问题。

没有代码更改。 在我们的打印机设置中,我们需要取消选中“允许转义序列”

感谢论坛提出问题。

会经常带着更多的问题和其他人提出的问题的解决方案访问

祝你好运 一个无知的程序员:)

【讨论】:

以上是关于Win32 API 打印不询问用户输入的主要内容,如果未能解决你的问题,请参考以下文章

Win32 API VS C++;文本框内容到字符串

[分享]WPF 虚拟键盘

如何更有效地使用def函数来询问用户的名字

win7 共享 不用输入用户名密码怎么设置

如何使用 Win32 API 阻止来自透明窗口的鼠标输入?

win7连接局域网其它电脑的时候输入用户名和密码都是正确的,为啥总是提示错误呢?