为C#中的后台打印程序API设置标志

本文关键字:程序 API 设置 标志 打印 后台 | 更新日期: 2023-09-27 18:29:45

在MSDN API的这篇文章中,它说:

一个位标志。如果在调用FindNextPrinterChangeNotification函数,该函数提供所有受监控打印机信息字段的当前数据。FindFirstPrinterChangeNotification函数忽略Flags成员

然而,我在API中找不到任何地方可以告诉标志PRINTER_NOTIFY_OPTIONS_REFRESH的值。这是我的结构:

[StructLayout(LayoutKind.Sequential)]
public class PRINTER_NOTIFY_OPTIONS
{
    public int dwVersion = 2;
    public int dwFlags;
    public int Count = 2;
    public IntPtr lpTypes;
    public PRINTER_NOTIFY_OPTIONS()
    {
        int bytesNeeded = (2 + PRINTER_NOTIFY_OPTIONS_TYPE.JOB_FIELDS_COUNT + PRINTER_NOTIFY_OPTIONS_TYPE.PRINTER_FIELDS_COUNT) * 2;
        PRINTER_NOTIFY_OPTIONS_TYPE pJobTypes = new PRINTER_NOTIFY_OPTIONS_TYPE();
        lpTypes = Marshal.AllocHGlobal(bytesNeeded);
        Marshal.StructureToPtr(pJobTypes, lpTypes, true);
    }
}

如何根据API文档设置dwFlags值?此外,文档中还有许多其他标志也没有值。它们存放在哪里?

为C#中的后台打印程序API设置标志

在文档的底部,您可以参考:

标题:Winspool.h

此文件的副本可能位于C:''Program Files(x86)''Windows Kits''8.1''Include''um

在文本编辑器中打开它并搜索常量,您会看到它的值为1。

#define PRINTER_NOTIFY_OPTIONS_REFRESH  0x01

如果你没有头文件,你可以安装Windows SDK,或者只在谷歌上搜索"define PRINTER_NOTIFY_OPTIONS_FRESH"