Чтение значений атрибутов

[Функция, связанная с этой страницей, Медиаплеер Windows sdk, является устаревшей функцией. Он был заменен MediaPlayer. MediaPlayer оптимизирован для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует по возможности использовать MediaPlayer вместо пакета SDK для Медиаплеер Windows. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]

Атрибуты, которые можно найти в библиотеке и в файлах Windows Media, имеют предопределенные имена. Вы можете написать код, который получает значение одного атрибута, передав имя этого атрибута в media. getItemInfo или Media. getItemInfoByType. Можно также написать код, который извлекает значения всех атрибутов в файле или элементе.

В следующем примере C# извлекается значение атрибута Title и отображается в окне сообщения. В этом примере объект Player был определен как axWMPLib.AxWindowsMediaPlayer Player.

IWMPMedia media;
string strAttribValue = "";

// Initialize the media object
media = Player.currentMedia;

// Retrieve the object's Title attribute
strAttribValue = media.getItemInfo("Title");

// Display the title
if (strAttribValue != "")
{
    MessageBox.Show("Current title: " + strAttribValue);
}

В вызове getItemInfoByType вторым параметром является строка, указывающая язык. Если передать пустую строку, как показано в этом примере, метод извлекает значение на языке по умолчанию. Сведения о третьем параметре см. в разделе Атрибуты с несколькими значениями.

В следующем примере C# извлекаются значения для заданного атрибута в текущем элементе мультимедиа. Эти значения возвращаются в виде строки, разделенной точкой с запятой. Обратите внимание, что для атрибутов, представленных в виде объектов, таких как WM/Lyrics_Synchronised, WM/Picture и WM/UserWebURL, функция возвращает пустую строку.

private string getAttributeValues(string strAttrName, IWMPMedia3 media)
{
    string strAttrValue = "";
    int iAttrCount = 0;

    if (media != null)
    {
        // Retrieve the count of values for this attribute
        iAttrCount = media.getAttributeCountByType(strAttrName, "");

        // Retrieve the values
        for (int i = 0; i < iAttrCount; i++)
        {
            strAttrValue += media.getItemInfoByType(strAttrName, "", i);
            strAttrValue += ";";
        }
    }

    // Return the resulting string
    return strAttrValue;
}

Третий аргумент, передаваемый методу getItemInfoByType , является индексом определенного атрибута в наборе атрибутов с тем же именем.

Аналогичный код можно использовать для получения атрибутов с уникальными именами. В таких случаях getAttributeCountByType возвращает значение 1. В приведенном выше примере вызов getItemInfoByType будет выполняться только один раз.

Изменение значений атрибутов

Атрибуты элемента мультимедиа

Объект media

Чтение значений атрибутов с компакт-диска или DVD-диска