【问题标题】:Retrieve available sheet formats of specific printer检索特定打印机的可用图纸格式
【发布时间】:2017-12-01 20:58:26
【问题描述】:

正如我在标题中所写,我正在寻找一种方法来检索 C++ 中特定打印机的可用工作表格式。目前我只能通过这种方式检索当前设置:

LPWSTR pName = L"My Printer Name";
HANDLE _printerHandle;
OpenPrinterW(pName, &_printerHandle, NULL);

LONG size = DocumentPropertiesW(NULL, _printerHandle, pName, NULL, NULL, 0);
PDEVMODEW info = (PDEVMODEW)malloc(size); //here I get/set settings
DocumentPropertiesW(NULL, _printerHandle, pName, info, NULL, DM_OUT_BUFFER);

任何帮助将不胜感激

【问题讨论】:

标签: c++ windows printing


【解决方案1】:

使用DeviceCapabilities 查询DC_BINS。这将为您提供一个单词数组,其中每个单词对应一个论文来源。 (查看DEVMODE 的描述中的dmDefaultSource 的描述来解释这些值。)

您还可以使用 DeviceCapabilities 查询 DC_PAPERSDC_PAPERSIZES 以了解支持的纸张尺寸。

【讨论】:

  • 我试图查询 DC_PAPERS 但我不知道如何获取值。这是我尝试执行的一段代码:DWORD deviceCapabilitiesSize = DeviceCapabilitiesW(info->pPrinterName, info->pPortName, DC_PAPERS, NULL, currentSettings); LPWSTR bins = (LPWSTR)malloc(deviceCapabilitiesSize + 1); DeviceCapabilitiesW(info->pPrinterName, info->pPortName, DC_PAPERS, bins, currentSettings); std::wcout << L"Available bins: " << std::endl; std::wcout << bins << std::endl; 其中 info 是 PRINTER_INFO_2W 结构
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-16
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 2010-11-07
  • 1970-01-01
相关资源
最近更新 更多