WPD получит размеры медиа

Я хочу получить ширину и высоту файла изображения на WPD через IPortableDeviceValues.

Согласно Центр разработки Windows каждый объект, тип которого WPD_CONTENT_TYPE_IMAGE (которым они являются), должен предоставить WPD_MEDIA_WIDTH / WPD_MEDIA_HEIGHT, но я всегда получаю ошибку.

HRESULT MyPortableDevice::getIntValue(IPortableDeviceProperties* properties, PCWSTR objectID, const PROPERTYKEY& key, DWORD* value)
{

ComPtr<IPortableDeviceValues>        objectProperties;
ComPtr<IPortableDeviceKeyCollection> propertiesToRead;

HRESULT hr = CoCreateInstance(CLSID_PortableDeviceKeyCollection,
nullptr,
CLSCTX_INPROC_SERVER,
IID_PPV_ARGS(&propertiesToRead));

if (SUCCEEDED(hr)) {
HRESULT tempHr = S_OK;
tempHr = propertiesToRead->Add(key);
}

if (SUCCEEDED(hr)) {
hr = properties->GetValues(objectID,
propertiesToRead.Get(),
&objectProperties);
}

if (SUCCEEDED(hr)) {

ULONG intValue = 0;
hr = objectProperties->GetUnsignedIntegerValue(key, &intValue);

if (SUCCEEDED(hr)) {
value = &intValue;
intValue = 0;
}
}

return hr;

Я всегда получаю значение ошибки от

hr = objectProperties->GetUnsignedIntegerValue(key, &intValue);

hr = 0x80070490 и я не могу найти этот код ошибки Вот

Кто-нибудь знает в чем дело?

0

Решение

Вы получили ошибку:
Код ошибки: (HRESULT) 0x80070490 (2147943568) — Элемент не найден.

Причина, по которой вы получили эту ошибку, заключается в том, что разработчики телефонных приложений обычно просто игнорируют некоторые свойства.

Я подключил телефон к компьютеру и проверил некоторые изображения Информационный инструмент WPD , и я получаю только такие поля для скриншота .jpg:
введите описание изображения здесь

Я думаю, что в большинстве случаев вам нужно прочитать содержимое картинки в поток и проверить ее параметры напрямую. Возможно, в некоторых форматах вы можете прочитать только часть заголовка и получить оттуда ШИРИНУ и ВЫСОТУ.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]