2013-09-16 3 views
0

Как определить, является ли принтер xps? Я нашел способ получить свойство «Опубликовано» из wmi (он установлен в false, если устройство не является физическим), но я хочу определить, является ли принтер xps-writer. Как определить, является ли принтер xps? C#

+0

Если пользователь не изменит имя принтера (маловероятно), не могли бы вы просто назвать имя? В конце концов, это называется «XPS Writer». – Arran

+0

Я могу использовать любые идентификаторы или информацию принтера, которые могут быть получены из wmi или реестра и т. Д. – seza

+1

Вы пытаетесь определить, является ли принтер «Xps Document Writer» или просто любым драйвером печати XPS? Зачем вам нужна эта информация? Может быть более простой способ достижения вашей цели. – Jon

ответ

0

Принтеры определяются используемым ими драйвером, а не их именем, поэтому принтер XPS будет использовать драйвер Microsoft XPS Document Writer. Это будет надежный тест, пока третье лицо не создаст другой драйвер печати XPS с другим именем, которое я не ожидаю в ближайшее время, если вообще когда-либо.

+1

Я создал драйвер печати XPS с другим именем. Кроме того, драйвер Microsoft Enhanced Point и Print является драйвером XPS. Наконец, Windows 8 поставляется с универсальными драйверами XPS Mono и XPS Color. –

+0

Я стою исправлен, но это единственный надежный способ определить, является ли принтер XPS. –

0

Если вы обнаружили от класса CPrintInfo, печати возвращений XPS файлов следующих значений -

CPrintInfo::m_pPD->GetDriverName() returns "winspool" 
 
CPrintInfo::m_pPD->GetDeviceName() returns "Microsoft XPS Document Writer" 
 
CPrintInfo::m_pPD->GetPortName() returns "XPSPort:"

Таким образом, это может быть достаточно безопасно предположить, если XPS или не проверяя устройство имя и имя порта.

+0

Я ответил на C++ по ошибке. :) –