我在 native C++/Win32/MFC 对话框应用程序中使用 MS Web 浏览器 ActiveX 控件通过 HTML 呈现一些信息。
我想在没有任何用户交互的情况下打印内容到指定打印机(不是默认打印机)。我想使用的打印机是 PDF 打印机。
我正在使用代码项目中的一个很好的包装器类,这使得使用 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 控件打印我指定的打印机而不是使用默认打印机吗?
最佳答案
除了您的所有步骤之外,我所做的就是在 IE 注册表中设置打印机,如下:
HKCU\Software\Microsoft\Internet Explorer\PageSetup\printer="the required printer name"
打印后恢复所有内容
关于windows - Microsoft Web 浏览器 ActiveX 控件 - 打印到指定(非默认)打印机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15238431/