我在简单的 win32 应用程序中使用 IWebBrowser2。我想以编程方式获取和设置打印机设置,例如页面大小或页面方向。
我找到了很多使用 C# 或 VB 的示例,但没有找到一个使用 C++ 的示例。
完美的变体是使用一些 COM 接口(interface)。
最佳答案
正如您所说的 COM 接口(interface),我假设您不需要 NET 函数,而是 winAPI
这是引用页面的第一眼 View :
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 );
然后您可以使用 StartDoc
、EndDoc
调用来执行实际打印,每个页面都包含 StartPage
EndPage
, optionnaly regestering 一个 AbortProc
过程。或者,我认为您可以通过 IWebBrowser2
接口(interface)使用配置的打印机,但我从未使用过该部分。
我知道这对于配置和使用打印机的真实示例来说还很远,但至少它应该提供足够的提示和指示。
关于c++ - 如何使用 C++ 通过 WebBrowser 控件以编程方式更改打印机设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36286859/