는 여기 XPSPrinter 드라이버 이름에 따라 설치하거나되지 않은 경우 반환하는 방법입니다.
이 방법은 프린터를 찾을 때까지 프린터를 반복하거나 찾지 않고 매 스캔마다 스캔합니다. "System.Management"에 대한 참조가 프로젝트에 추가되어야합니다.
private bool GetIfXPSPrinterIsInstalled()
{
bool isXPSPrinterMissing = true;
try
{
var printerQuery = new System.Management.ManagementObjectSearcher("SELECT * from Win32_Printer");
var iterator = printerQuery.Get().GetEnumerator();
while (iterator.MoveNext() && isXPSPrinterMissing)
{
//isXPSPrinterMissing = iterator.Current.GetPropertyValue("DriverName").ToString() != "Microsoft XPS Document Writer";
isXPSPrinterMissing = !iterator.Current.GetPropertyValue("DeviceID").ToString().ToUpper().Contains("XPS");
}
if (isXPSPrinterMissing)
{
MessageBox.Show("Warning, there is no XPS printer installed on this computer");
}
}
catch (Exception ex)
{
MessageBox.Show("System couldn't verify if there is a XPS printer installed because an error occured");
}
return !isXPSPrinterMissing;
}
편집 : 내가 발견 해당 드라이버 이름은 약간의 시간이 잘못 될 수 있습니다. XPS 프린터 및 일부 비 xps 프린터 대신 "원격 데스크톱 간편 인쇄"가 될 수 있습니다. 따라서 DeviceID에 XPS가 포함되어 있는지 확인하는 것이 더 안전한 방법입니다.
이름은 확실히 신뢰할 수 없습니다. 사용자는 언제든지 "Microsoft XPS Document Writer"인쇄 큐의 이름을 바꿀 수 있습니다. – Jon