我在本機C++/Win32/MFC對話框應用程序中使用MS Web瀏覽器ActiveX控件來通過HTML呈現某些信息。Microsoft Web瀏覽器ActiveX控件 - 打印到指定的(非默認)打印機
我想打印的內容沒有任何用戶交互到指定的打印機(這不是默認打印機)。我想使用的打印機是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控件來打印打印機我指定,而不是使用默認打印機?
更新:看起來像沒有這樣做。在離開前的前一天,我手動將PDF打印機設置爲默認打印機。我忘了把它放回去,並嘗試你的建議,它的工作。但僅僅是因爲PDF打印機被手動設置爲系統默認值。當我將默認設置切換回物理打印機時,上述操作無效。即使在打印之前設置註冊表項,瀏覽器控件仍然會將文檔打印到系統默認打印機。 – Nerdtron 2013-03-06 20:10:28
我知道它的工作原理;註冊表關鍵是沒有必要的,也不足以從我的測試。我將添加爲我工作的解決方案。 – Nerdtron 2013-03-06 21:06:35
它在某些情況下可能需要註冊表的東西;不知道,但對我來說,這似乎並不重要。即使使用註冊表鍵,我仍然必須首先設置默認打印機,即使沒有註冊表,它仍然可以工作,一旦我找出問題所在。 – Nerdtron 2013-03-06 21:09:38