Freigeben über


Auswählen von Elementen zum Ripping

[Das dieser Seite zugeordnete Feature Windows Medienwiedergabe SDK ist ein Legacyfeature. Es wurde von MediaPlayer abgelöst. MediaPlayer wurde für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, mediaPlayer anstelle von Windows Medienwiedergabe SDK für neuen Code zu verwenden. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, so umgeschrieben wird, dass nach Möglichkeit die neuen APIs verwendet werden.]

Manchmal möchte ein Benutzer nicht alle Titel auf einer CD rippen. Windows Medienwiedergabe stellt eine Schnittstelle bereit, über die angegeben wird, welche Spuren zum Rippen ausgewählt werden. In einer CD-Rippinganwendung gibt es in der Regel eine Benutzeroberfläche, über die der Benutzer Kontrollkästchen in einer Liste der Titel auf der CD aktivieren kann.

Einige Titel sind möglicherweise nicht standardmäßig für das Ripping ausgewählt. Wenn sich ein Titel bereits in der Windows Medienwiedergabe-Bibliothek befindet, wird er nicht automatisch für das Ripping ausgewählt. Im zweiten Codebeispiel in diesem Abschnitt wird veranschaulicht, wie Sie den Standardwert umgehen und manuell einen Titel zum Rippen auswählen, wenn er bereits gerissen wurde.

Im folgenden Codebeispiel wird veranschaulicht, wie Ermittelt wird, ob eine Spur zum Rippen ausgewählt ist:

HRESULT CMainDlg::IsTrackSelected(long lIndex, bool &bSelected)
{
    // The track is selected unless the
    // "SelectedForRip" attribute is true.
    bSelected = true;

    // bstrItemName and bstrVal are used for getItemInfo.
    CComBSTR bstrItemName;
    CComBSTR bstrVal;

    // Get an IWMPMedia from the Playlist.
    CComPtr<IWMPMedia> spMedia;
    HRESULT hr = m_spPlaylist->get_item(lIndex, &spMedia);

    // Check whether it is selected for ripping.
    if (SUCCEEDED(hr))
    {
        hr = bstrItemName.Append("SelectedForRip");
    }
    if (SUCCEEDED(hr))
    {
        hr = spMedia->getItemInfo(
            bstrItemName,
            &bstrVal);
    }
    if (SUCCEEDED(hr))
    {
        // If getItemInfo("SelectedForRip") is not "True"
        // then the track is not selected.
        if (wcscmp(bstrVal.m_str, L"True"))
            bSelected = false;
    }

    return hr;
}

Im folgenden Codebeispiel wird veranschaulicht, wie angegeben wird, ob eine Spur zum Rippen ausgewählt wird.

HRESULT CMainDlg::SelectTrack (long lIndex, bool bSelected)
{
    // bstrItemName and bstrVal are used for setItemInfo.
    CComBSTR bstrItemName;
    CComBSTR bstrVal;

    // Get an IWMPMedia from the Playlist.
    CComPtr<IWMPMedia> spMedia;
    HRESULT hr = m_spPlaylist->get_item(lIndex, &spMedia);

    // Select the track for ripping.
    if (SUCCEEDED(hr))
    {
        hr = bstrItemName.Append("SelectedForRip");
    }
    if (SUCCEEDED(hr))
    {
        if (bSelected)
        {
            hr = bstrVal.Append("True");
        }
        else
        {
            hr = bstrVal.Append("False");
        }
    }
    if (SUCCEEDED(hr))
    {
        hr = spMedia->setItemInfo(
            bstrItemName,
            bstrVal);
    }

    return hr;
}

Rippen einer CD

Abrufen der Rippingschnittstelle

Starten des Rip-Prozesses

Abrufen des Rip-Status