C#获取剩余页面的打印机首选项

时间:2012-08-13 16:36:58

标签: c# printing dialog preferences

我需要将剩余的页面放到特殊的打印对话框中: http://imageshack.us/photo/my-images/837/imagegu.png/

我可以使用下一行启动此对话框:

private void OpenPrinterPropertiesDialog()
{
    PrinterSettings printerSettings = new PrinterSettings();
    IntPtr hDevMode = printerSettings.GetHdevmode(printerSettings.DefaultPageSettings);
    IntPtr pDevMode = GlobalLock(hDevMode);
    int sizeNeeded = DocumentProperties(IntPtr.Zero, IntPtr.Zero, printerSettings.PrinterName,     IntPtr.Zero, pDevMode, 0);
    IntPtr devModeData = Marshal.AllocHGlobal(sizeNeeded);

    DocumentProperties(IntPtr.Zero, IntPtr.Zero, printerSettings.PrinterName, devModeData, pDevMode, 14);
    // <--- Here the print dialog appears

    GlobalUnlock(hDevMode);
    printerSettings.SetHdevmode(devModeData);
    printerSettings.DefaultPageSettings.SetHdevmode(devModeData);
    GlobalFree(hDevMode);
    Marshal.FreeHGlobal(devModeData);
}

我在PrintDocument,PrinterSettings等的msdn文档中搜索并没有找到任何方法来获取此信息值,如何在不打开的情况下获取此首选项对话框的剩余页面值?可能吗?我需要知道打印机的剩余页面。 感谢。

编辑:我需要获取捕获图片中剩余的框中的信息值,即打印机的空白页。

1 个答案:

答案 0 :(得分:1)

.NET中没有任何特定内容可以获取 数据。可能,您可以通过DEVMODE.dwDriverExtra(通过PInvoke)获取它,但您必须知道数据的结构(即您必须联系Mistubishi)以及该数据中的页面剩余计数存储在何处 - 如果有的话。没有任何内容表明属性对话框中可见的所有内容都可以通过编程方式访问。