在 C# 中为 Print Spooler API 设置标志?
Set flag for Print Spooler API in C#?
在这个 MSDN API Article 中,它说:
A bit flag. If you set the PRINTER_NOTIFY_OPTIONS_REFRESH flag in a
call to the FindNextPrinterChangeNotification function, the function
provides current data for all monitored printer information fields.
The FindFirstPrinterChangeNotification function ignores the Flags
member.
但是,我找不到 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 值?文档中还有许多其他标志也没有价值。它们存储在哪里?
在文档底部提到您:
Header: Winspool.h
您的此文件副本可能位于 C:\Program Files (x86)\Windows Kits.1\Include\um
在文本编辑器中打开它并搜索常量,您将看到它的值为 1。
#define PRINTER_NOTIFY_OPTIONS_REFRESH 0x01
如果您没有 header 文件,您可以安装 Windows SDK 或 google for "define PRINTER_NOTIFY_OPTIONS_REFRESH"
在这个 MSDN API Article 中,它说:
A bit flag. If you set the PRINTER_NOTIFY_OPTIONS_REFRESH flag in a call to the FindNextPrinterChangeNotification function, the function provides current data for all monitored printer information fields. The FindFirstPrinterChangeNotification function ignores the Flags member.
但是,我找不到 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 值?文档中还有许多其他标志也没有价值。它们存储在哪里?
在文档底部提到您:
Header: Winspool.h
您的此文件副本可能位于 C:\Program Files (x86)\Windows Kits.1\Include\um
在文本编辑器中打开它并搜索常量,您将看到它的值为 1。
#define PRINTER_NOTIFY_OPTIONS_REFRESH 0x01
如果您没有 header 文件,您可以安装 Windows SDK 或 google for "define PRINTER_NOTIFY_OPTIONS_REFRESH"