Question 111

Comment graver un CD à partir de Visual Basic ?

On peut le faire à partir de divers composants ActiveX (dll) disponibles sur Internet tels que :

Certains logiciels, tel que Nero Burning Rom proposent un SDK permettant d'accéder de graver un CD. Renseignez-vous auprès de la société produisant votre logiciel de gravure pour savoir si elle propose une telle solution.

Il est aussi possible d'employer certains logiciels de gravure (tel que Nero Burning Rom, Easy CD Creator, etc) en ligne de commande. Pour ce faire, se référer à la question 7 : Comment exécuter un autre programme depuis une application VB ?. Une recherche dans l'aide du programme en question ou dans Google permettra de connaître la syntaxe des arguments de la ligne de commandes.

Si votre application est destinée à Windows XP (et sans doutes futures versions de Widnows), vous pouvez utiliser son système de gravure. Pour ce faire, il vous faudra commencer par copier les fichiers à graver vers un dossier spécial destiné à cet usage. Pour connaitre l'emplacement de ce dossier, référez vous à la question 60 : Comment trouver l'emplacement de certains dossiers spéciaux ?. Ensuite, pour entammer le processus d'écriture, il vous faudra créer un nouvel objet dérivant de l'interface ICDBurn. Nous avons implémenté pour vous dans une typelib (ICDBurn.tlb) l'interface et la coclass nécessaire. Voici un exemple de code montrant comment utiliser cette typelib :

    'Ajoutez une référence au fichier ICDBurn.tlb
    Dim Burn As CDBurn, lngResult As Long
    Dim strDrive As String, lngBufferlenght As Long

    'Crée une nouvelle instance de l'objet
    Set Burn = New CDBurn

    'Détermine si un graveur est présent
    Burn.HasRecordableDrive lngResult
    'Si c'est le cas
    If lngResult Then
        'Crée un buffer
        lngBufferlenght = 255
        strDrive = String$(lngBufferlenght, vbNullChar)
        'Et détermine la lettre du graveur que nous allons utiliser
        Burn.GetRecorderDriveLetter strDrive, lngBufferlenght
        MsgBox Left$(strDrive, InStr(1, strDrive, vbNullChar) - 1) & " - " & lngResult

        'Entamme la gravure
        Burn.Burn Me.hWnd
    End If

Une dernière solution consiste à employer IMAPI (Image Mastering API) documenté dans la MSDN : http://msdn.microsoft.com/library/en-us/devio/base/image_mastering_api.asp.

Date de publication : 26 janvier 2003
Dernière modification : 05 décembre 2004
Rubriques : Divers, Fichiers & dossiers
Mots-clés : graver, CD, CD-Rom, CDR