Как определить, является ли принтер xps? Я нашел способ получить свойство «Опубликовано» из wmi (он установлен в false, если устройство не является физическим), но я хочу определить, является ли принтер xps-writer. Как определить, является ли принтер xps? C#
ответ
Принтеры определяются используемым ими драйвером, а не их именем, поэтому принтер XPS будет использовать драйвер Microsoft XPS Document Writer
. Это будет надежный тест, пока третье лицо не создаст другой драйвер печати XPS с другим именем, которое я не ожидаю в ближайшее время, если вообще когда-либо.
Я создал драйвер печати XPS с другим именем. Кроме того, драйвер Microsoft Enhanced Point и Print является драйвером XPS. Наконец, Windows 8 поставляется с универсальными драйверами XPS Mono и XPS Color. –
Я стою исправлен, но это единственный надежный способ определить, является ли принтер XPS. –
Если вы обнаружили от класса CPrintInfo, печати возвращений XPS файлов следующих значений -
CPrintInfo::m_pPD->GetDriverName() returns "winspool"
CPrintInfo::m_pPD->GetDeviceName() returns "Microsoft XPS Document Writer"
CPrintInfo::m_pPD->GetPortName() returns "XPSPort:"
Таким образом, это может быть достаточно безопасно предположить, если XPS или не проверяя устройство имя и имя порта.
Я ответил на C++ по ошибке. :) –
Если пользователь не изменит имя принтера (маловероятно), не могли бы вы просто назвать имя? В конце концов, это называется «XPS Writer». – Arran
Я могу использовать любые идентификаторы или информацию принтера, которые могут быть получены из wmi или реестра и т. Д. – seza
Вы пытаетесь определить, является ли принтер «Xps Document Writer» или просто любым драйвером печати XPS? Зачем вам нужна эта информация? Может быть более простой способ достижения вашей цели. – Jon