0

我有一个处理打印请求的系统服务,并给定用户的打印机名称,将 DC 附加到该打印机。它开始一个文档,结束它,然后分离。

m_PrinterDC.CreateDC (L"WINSPOOL", _printerName.c_str(), NULL, NULL)
m_DC.Attach(m_hprinter)
m_DC.StartDoc(...)
...
mDc.TextOut(...)
...
m_DC.EndDoc()
m_DC.Detatch()

这适用于普通打印机,但在使用“打印到 OneNote”功能(驱动程序名称“发送到 OneNote 2010”)时,它似乎不起作用。我想避免仅针对此功能的自定义逻辑;理想情况下,所有打印机都可以正常工作。有什么想法可能会出错吗?我已尝试更新打印机安全设置,以包括所有人的打印权限;不知道还有什么可以尝试的。

4

1 回答 1

0

不幸的是,我不得不猜测一些要点,因为您似乎避免详细描述错误情况。

首先,如果你检查所有返回值都是成功的,那可能是onenote本身的问题。通过使用其他程序打印来检查 onenote 的状况。

其次,您检查 _printerName 是否准确?如果部分用户使用其他语言操作系统,驱动程序名称“Send To OneNote 2010”会有所不同或取决于版本。当然,如果您检查函数调用的所有返回值,它会记录在您的日志文件中。但是,我担心您使用“EnumPrinters”使用了确切的打印机名称。

http://msdn.microsoft.com/en-us/library/windows/desktop/dd162931(v=vs.85).aspx

我希望这对你有一点帮助。

于 2013-05-11T01:08:01.707 回答