Сохранить настройки печати из windows диалогового окна настроек печати - PullRequest
2 голосов
/ 13 января 2020

Я вызываю диалог настроек принтера через 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);
        }

Моя проблема в том, что настройки не сохраняются. Настройки должны быть сохранены на уровне операционной системы, чтобы эти настройки оставались для каждого приложения.

1 Ответ

0 голосов
/ 20 января 2020

Вы читали этот пост на MSDN ?

Кажется, вам следует звонить

IntPtr hDevMode = printerSettings.GetHdevmode();

вместо

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

И мне также было бы интересно, откуда взялся аргумент 14 в DocumentProperties. Разве это не должно быть DM_OUT_BUFFER?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...