Récupération de l’état de gravure

[La fonctionnalité associée à cette page, Lecteur multimédia Windows SDK, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer. MediaPlayer a été optimisé pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise MediaPlayer au lieu de Lecteur multimédia Windows SDK, lorsque cela est possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]

Dans l’exemple de code qui suit, les contrôles de boîte de dialogue suivants sont définis :

ID du contrôle Description
IDC_BURN_STATE Texte statique qui représente l’état de l’opération de gravure de CD.
IDC_PROGRESS Barre de progression avec une plage de 0 à 100 qui représente la progression totale de la gravure.
IDC_PROGRESS_TEXT Texte statique qui représente la progression totale de la gravure sous la forme d’un nombre compris entre 0 et 100.
IDC_AVAILABLE_TIME Texte statique pour afficher le temps disponible sur le CD, en secondes.
IDC_FREE_SPACE Texte statique pour afficher l’espace libre sur le CD, en octets.
IDC_TOTAL_SPACE Texte statique pour afficher la capacité totale du CD, en octets.

 

Vous pouvez surveiller la progression de l’opération de gravure en appelant régulièrement IWMPCdromBurn::get_burnProgress pendant que le CD est en cours de gravure. Cette méthode récupère une valeur de progression pour l’ensemble de l’opération de gravure. La valeur récupérée est un nombre qui représente le pourcentage de gravure terminée, de 0 à 100.

// Update the progress bar IDC_PROGRESS
// and the corresponding text string IDC_PROGRESS_TEXT.
long lProgress = 0;
hr = m_spCdromBurn->get_burnProgress(&lProgress);
if (SUCCEEDED(hr))
{
    SendMessage(GetDlgItem(IDC_PROGRESS),
        PBM_SETPOS, lProgress, 0);
    SetDlgItemInt(IDC_PROGRESS_TEXT, lProgress);
}

Vous pouvez obtenir l’état actuel de l’opération de combustion en appelant IWMPCdromBurn::get_burnState. Cette méthode récupère une énumération spécifiant l’opération en cours d’exécution.

// Retrieve the burn state.
WMPBurnState wmpbs = wmpbsUnknown;
HRESULT hr = m_spCdromBurn->get_burnState(&wmpbs);

if (SUCCEEDED(hr))
{
    // Set the burn state string.
    CComBSTR bstrState;
    switch (wmpbs)
    {
        case wmpbsUnknown:
        default:
            hr = bstrState.Append("Unknown state.");
            break;
        case wmpbsBusy:
            hr = bstrState.Append("Windows Media Player is Busy.");
            break;
        case wmpbsReady:
            hr = bstrState.Append("Ready to begin burning.");
            break;
        case wmpbsWaitingForDisc:
            hr = bstrState.Append("Waiting for disc.");
            break;
        case wmpbsRefreshStatusPending:
            hr = bstrState.Append("The burn playlist has changed.");
            m_spCdromBurn->refreshStatus();
            break;
        case wmpbsPreparingToBurn:
            hr = bstrState.Append("Preparing to burn the CD.");
            break;
        case wmpbsBurning:
            hr = bstrState.Append("The CD is being burned.");
            break;
        case wmpbsStopped:
            hr = bstrState.Append("The burning operation is stopped.");
            break;
        case wmpbsErasing:
            hr = bstrState.Append("Erasing the CD.");
            break;
    }
    if (SUCCEEDED(hr))
    {
        SetDlgItemTextW(IDC_BURN_STATE, bstrState.m_str);
    }
}

Pour récupérer le nombre de secondes audio que le CD peut contenir, appelez IWMPCdromBurn::getItemInfo avec « AvailableTime » comme premier paramètre. La valeur récupérée par cette fonction est représentée par une chaîne.

// Set "AvailableTime" string
CComBSTR bstrTime;
CComBSTR bstrItem;
HRESULT hr = bstrItem.Append("AvailableTime");
if (SUCCEEDED(hr))
{
    hr = m_spCdromBurn->getItemInfo(bstrItem, &bstrTime);
}
if (SUCCEEDED(hr))
{
    hr = bstrTime.Append(" seconds");
}
if (SUCCEEDED(hr))
{
    SetDlgItemTextW(IDC_AVAILABLE_TIME, bstrTime.m_str);
}

Pour récupérer la quantité d’espace libre sur un disque, appelez IWMPCdromBurn::getItemInfo avec « FreeSpace » comme premier paramètre. La valeur récupérée par cette fonction est une chaîne qui représente le nombre d’octets libres disponibles sur le disque.

// Set "FreeSpace" string
CComBSTR bstrFreeSpace;
CComBSTR bstrItem;
HRESULT hr = bstrItem.Append("FreeSpace");
if (SUCCEEDED(hr))
{
    hr = m_spCdromBurn->getItemInfo(bstrItem, &bstrFreeSpace);
}
if (SUCCEEDED(hr))
{
    hr = bstrFreeSpace.Append(" bytes");
}
if (SUCCEEDED(hr))
{
    SetDlgItemTextW(IDC_FREE_SPACE, bstrFreeSpace.m_str);
}

Pour récupérer la capacité totale d’un disque, appelez IWMPCdromBurn::getItemInfo avec « TotalSpace » comme premier paramètre. La valeur récupérée par cette fonction est une chaîne qui correspond au nombre total d’octets sur le disque.

// Set "TotalSpace" string.
CComBSTR bstrTotalSpace;
CComBSTR bstrItem;
HRESULT hr = bstrItem.Append("TotalSpace");
if (SUCCEEDED(hr))
{
    hr = m_spCdromBurn->getItemInfo(bstrItem, &bstrTotalSpace);
}
if (SUCCEEDED(hr))
{
    hr = bstrTotalSpace.Append(" bytes");
}
if (SUCCEEDED(hr))
{
    SetDlgItemTextW(IDC_TOTAL_SPACE, bstrTotalSpace.m_str);
}

Gravure d’un CD

Récupération de l’interface de gravure de CD

Démarrage du processus de gravure

Effacement d’un CD réinscriptible

Récupération de l’état du lecteur et du disque