为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值?此外,文档中还有许多其他标志也没有值。它们存放在哪里?
在文档的底部,您可以参考:
标题: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"