ネイティブ C++/Win32/MFC ダイアログ アプリケーションで MS Web Browser ActiveX コントロールを使用して、HTML 経由でいくつかの情報をレンダリングしています。
ユーザーの操作なしで、指定されたプリンター (既定のプリンターではない) にコンテンツを印刷したいと思います。使用したいプリンターは PDF プリンターです。
私は Code Project の素敵なラッパー クラスを使用しています。ラッパーが提供するものは印刷です。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 コントロールで印刷する方法を教えてください。