我在本机 C++/Win32/MFC 对话框应用程序中使用 MS Web Browser ActiveX 控件通过 HTML 呈现一些信息。
我想在没有任何用户交互的情况下打印内容到指定的打印机(这不是默认打印机)。我想使用的打印机是 PDF 打印机。
我正在使用来自 Code Project 的一个不错的包装类,它使使用 Web 浏览器控件更容易一些(http://www.codeproject.com/Articles/3919/Using-the-WebBrowser-control-simplified)和其中之一包装器提供的东西是打印。它提供了一种使用 ExecWB(OLECMDID_PRINT,OLECMDEXECOPT_DONTPROMPTUSER,...) 来启动打印内容的打印方法。
这很有效,并且无需任何用户交互即可将控件的内容打印到默认打印机。
然后,挑战是让它使用与默认打印机不同的打印机。我最初的尝试是调用 ::SetDefaultPrinter ( http://msdn.microsoft.com/en-us/library/windows/desktop/dd162971(v=vs.85).aspx )。这似乎不起作用。看起来,尽管调用了 ::SetDefaultPrinter,Web 浏览器 ActiveX 控件仍会打印到系统默认打印机。就好像它忽略了这个调用所做的一切。
我尝试按照 MSDN 链接中的建议广播系统设置更改消息,并直接将其发送到浏览器窗口,没有任何运气。
有什么想法可以让 Web 浏览器 activex 控件打印我指定的打印机而不是使用默认打印机?