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. |