我正在尝试通过以下方式将一些打印机属性(即页面大小)保存到 ini 文件中:
Printer()->PrinterIndex = Printer()->PrinterIndex;
wchar_t printerDevice[256], printerDriver[256], printerPort[256];
THandle printerDeviceModeHandle = 0;
DEVMODE *printerDeviceMode;
Printer()->GetPrinter(printerDevice, printerDriver, printerPort, printerDeviceModeHandle);
if (printerDeviceModeHandle != 0)
{
DEVMODE *printerDeviceMode = (DEVMODE *) GlobalLock((void *)printerDeviceModeHandle);
if ((printerDeviceMode != NULL) && (printerDeviceMode->dmFields & DM_PAPERSIZE))
ini->WriteInteger("PrintingPage", "PaperSize", printerDeviceMode->dmPaperSize);
GlobalUnlock((void *)printerDeviceModeHandle);
}
代码在内部 if 语句中,但是当我检查printerDeviceMode
变量时,只有dmDeviceName
看起来是正确的。许多其他设置似乎是垃圾(包括dmPaperSize
):
注意dmSize
是0。
我尝试使用 TPrinterSetupDialog 组件更改打印机的页面大小,但值dmPaperSize
保持不变。
我在某个地方错过了一步吗?
这是一个 XE4 c++ builder VCL 项目。