2016-01-11 1 views
2

В этом 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? Также в документе есть много других флагов, которые также не имеют значения. Где они хранятся?

ответ

1

В нижней части документации вы называются:

Заголовок: Winspool.h

Ваша копия этого файла, скорее всего, находится в C: \ Program Files (x86) \ Windows наборы \ 8.1 \ Include \ гм

Откройте его в текстовом редакторе и поиск постоянной, вы увидите его значение 1.

#define PRINTER_NOTIFY_OPTIONS_REFRESH 0x01 

Если вы не имеете файлы заголовков, вы можете установить Windows SDK или просто Google для «определяют PRINTER_NOTIFY_OPTIONS_REFRESH»

+0

Классный! Спасибо за подсказку Google. Я попробовал имя флага в Google, но ничего не нашел. –

+0

Могу ли я задать еще один вопрос? В ссылке говорится, что DLL-файл является «Spoolss.dll». Однако, если я использую '[DllImport (« winspool.drv »...», он работает, но '[DllImport (« Spoolss.dll »...», это не так? –

+1

Вот где функция реализована, вы вызовите его через Winspool.drv, который является клиентским интерфейсом к системе спулера –

Смежные вопросы