В этом MSDN API Article, он говорит:Установите флаг для API очереди печати в C#?
Немного флаг. Если вы устанавливаете флаг PRINTER_NOTIFY_OPTIONS_REFRESH в вызове функции 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);
}
}
Как установить значение dwFlags в соответствии с документацией API? Также в документе есть много других флагов, которые также не имеют значения. Где они хранятся?
Классный! Спасибо за подсказку Google. Я попробовал имя флага в Google, но ничего не нашел. –
Могу ли я задать еще один вопрос? В ссылке говорится, что DLL-файл является «Spoolss.dll». Однако, если я использую '[DllImport (« winspool.drv »...», он работает, но '[DllImport (« Spoolss.dll »...», это не так? –
Вот где функция реализована, вы вызовите его через Winspool.drv, который является клиентским интерфейсом к системе спулера –