我在简单的win32应用程序中使用IWebBrowser2。我想以编程方式获取并设置打印机设置,如页面大小或页面方向。
我找到了很多使用C#或VB的例子,但没有一个用于C ++。
完美的变体就是使用一些COM接口。
答案 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
);
然后,您可以使用StartDoc
,EndDoc
调用使用StartPage
EndPage
封闭每个页面的实际打印,并且可以选择重新设置AbortProc
过程。或者,您认为您可以通过IWebBrowser2
界面使用配置的打印机,但我从未使用过该部分。
我知道这仍然是配置打印机并使用它的一个真实例子,但至少它应该提供足够的提示和指针。