windows - Microsoft Web 浏览器 ActiveX 控件 - 打印到指定(非默认)打印机

标签 windows printing mfc webbrowser-control

我在 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/

相关文章:

windows - 从 32 位进程上的 64 位进程调用 VirtualQueryEx 函数

firefox - 在 Firefox 中,打印带有 anchor 标记的页面时,链接位置打印在文本之后

c# - 从 c# 中的 postscript 文档生成 PDF 文件

javascript - 在 FireFox 和 IE 8 中打印横向或纵向

visual-studio-2008 - 2008 MFC和线程?

php - 我可以使用 header() 来传递查询字符串参数吗?

windows - 是否有适用于 Windows 平台的轻量级、可编程的 Sandbox API?

c++ - 从 Visual Studio 2010 到 2012 RC 编译 MFC 应用程序导致 LNK2038

Windows 上的 C 编程 - 适合曾经在 Ubuntu 上使用过的人

c++ - Windows C++ 将启动的子进程带到前台