Получить IP-адрес драйвера принтера по умолчанию в UWP
У нас есть требование настроить IP-адрес принтера в драйвере принтера по умолчанию на панели управления в нашем приложении UWP.
Мне удалось получить "System.DeviceInterface.PrinterPortName", выбрав GUID класса интерфейса и передав это свойство для извлечения.
Но я не мог получить "System.Devices.IpAddress" аналогичным образом. Код вставлен ниже для PortName.
Мне очень нужен IP-адрес, так как имя порта выбирается пользователем и может быть изменено на любое имя, удаляющее IP-адрес.
Пожалуйста, помогите поделиться рабочим кодом для получения IP-адреса, используя указанное выше свойство или любым другим способом в приложении UWP.
Ниже приведен рабочий код для имени порта. Пожалуйста, помогите получить IP-адрес того же порта аналогичным образом.
string aqsFilter = "System.Devices.InterfaceClassGuid:=\"{0ecef634-6ef0-472a-8085-5ad023ecbccd}\"";
string[] propertiesToRetrieve = new string[] { "System.DeviceInterface.PrinterPortName"};
DeviceInformationCollection deviceInfoCollection = await DeviceInformation.FindAllAsync(aqsFilter, propertiesToRetrieve);
foreach (DeviceInformation deviceInfo in deviceInfoCollection)
{
if (deviceInfo.IsDefault == true)
{
string strPortName = (string)deviceInfo.Properties["System.DeviceInterface.PrinterPortName"];
if (!string.IsNullOrEmpty(strPortName))
{
strPortName = await ParsePortName(strPortName);
if (!string.IsNullOrEmpty(strPortName))
{
_strIPAddress = strPortName;
}
}
break;
}
}
1 ответ
Это не подтверждается, потому что IP-адрес может измениться, и поэтому он ненадежен.
При этом, если ваш принтер установлен с использованием wsd, он технически поддерживается, например, DEVPKEY_PNPX_IpAddress DEVPROP_TYPE_STRING_LIST 32 "10.137.192.202"Но нет надежного способа использовать это без множества различных проверок сценария, поскольку IP-адрес может измениться.
Кроме того, глядя на этот пример, вы обращаетесь не к провайдерам DAF, а к поиску устройств. Вы используете 0ecef634-6ef0-472a-8085-5ad023ecbccd, который является руководством класса принтера. Также не похоже, что IP-адрес распространяется в пакете свойств PnP Explorer, поэтому IP-адрес недоступен.