从窗口打印设置对话框中保存打印设置



我通过Windows API调用打印机设置对话框

private void OpenPrinterPropertiesDialog(PrinterSettings printerSettings)
{
IntPtr hDevMode = printerSettings.GetHdevmode(printerSettings.DefaultPageSettings);
IntPtr pDevMode = GlobalLock(hDevMode);
//int sizeNeeded = DocumentProperties(new WindowInteropHelper(this).Handle, IntPtr.Zero, printerSettings.PrinterName, pDevMode, ref pDevMode, 0);
int sizeNeeded = DocumentProperties(new WindowInteropHelper(this).Handle, IntPtr.Zero, printerSettings.PrinterName, IntPtr.Zero, pDevMode, 0);
IntPtr devModeData = Marshal.AllocHGlobal(sizeNeeded);
DocumentProperties(new WindowInteropHelper(this).Handle, IntPtr.Zero, printerSettings.PrinterName, devModeData, pDevMode, 14);
GlobalUnlock(hDevMode);
printerSettings.SetHdevmode(devModeData);
printerSettings.DefaultPageSettings.SetHdevmode(devModeData);
GlobalFree(hDevMode);
Marshal.FreeHGlobal(devModeData);
}

我的问题是设置未保存。这些设置应保存在操作系统级别,以便这些设置保留在每个应用程序中。

你在msdn上读过这篇文章吗?

看来你应该打电话

IntPtr hDevMode = printerSettings.GetHdevmode();

而不是

IntPtr hDevMode = printerSettings.GetHdevmode(printerSettings.DefaultPageSettings);

我也对DocumentProperties14的论点从何而来感兴趣。这不应该是DM_OUT_BUFFER吗?

最新更新