如何使用c ++以编程方式使用WebBrowser控件更改打印机设置?

时间:2016-03-29 14:11:33

标签: c++ printing iwebbrowser2

我在简单的win32应用程序中使用IWebBrowser2。我想以编程方式获取并设置打印机设置,如页面大小或页面方向。

我找到了很多使用C#或VB的例子,但没有一个用于C ++。

完美的变体就是使用一些COM接口。

1 个答案:

答案 0 :(得分:2)

当你谈到COM接口时,我假设你不想要.NET功能,而是winAPI个。

以下是引用页面的第一眼视图:

  • EnumPrinters允许获取打印机列表 - 不确定是否需要它......
  • OpenPrinter为您提供特定打印机的句柄

    BOOL OpenPrinter(
      LPTSTR pPrinterName,         // printer or server name
      LPHANDLE phPrinter,          // printer or server handle
      LPPRINTER_DEFAULTS pDefault  // printer defaults
    );
    
  • GetPrinter为您提供有关打印机的许多信息,特别是指定每用户默认打印机设置的PRINTER_INFO_9结构。

    BOOL GetPrinter(
      HANDLE hPrinter,    // handle to printer
      DWORD Level,        // information level (9 to get the PRINTER_INFO_9)
      LPBYTE pPrinter,    // printer information buffer
      DWORD cbBuf,        // size of buffer
      LPDWORD pcbNeeded   // bytes received or required
    );
    typedef struct _PRINTER_INFO_9 {
      LPDEVMODE pDevMode;   // contains actual setting like orientation...
    } PRINTER_INFO_9, *PPRINTER_INFO_9;
    
  • SetPrinter允许将配置设置回打印机

    BOOL SetPrinter(
      HANDLE hPrinter,  // handle to printer object
      DWORD Level,      // information level (9 to use the PRINTER_INFO_9)
      LPBYTE pPrinter,  // printer data buffer
      DWORD Command     // printer-state command
    );
    

然后,您可以使用StartDocEndDoc调用使用StartPage EndPage封闭每个页面的实际打印,并且可以选择重新设置AbortProc过程。或者,您认为您可以通过IWebBrowser2界面使用配置的打印机,但我从未使用过该部分。

我知道这仍然是配置打印机并使用它的一个真实例子,但至少它应该提供足够的提示和指针。