Plantage de gravure DVD avec Nero SDK

cs_kramp Messages postés 13 Date d'inscription mardi 7 mai 2002 Statut Membre Dernière intervention 5 novembre 2004 - 26 oct. 2004 à 15:36
clamou Messages postés 9 Date d'inscription lundi 30 avril 2007 Statut Membre Dernière intervention 16 mai 2009 - 28 avril 2008 à 18:07
Bonjour à tous,

j'essaye de mettre au point un programme en VB6 qui permet de graver un fichier sur un DVD+RW. Je veux que le soft test si le DVD+RW est vierge, si il ne l'est pas il le formate, puis il grave sur le DVD+RW vierge.
Pour cela j'ai choisi d'utiliser la SDK de Nero car je possède une version OEM de Nero fournie avec mon graveur de DVD.

Lorsque je tente de graver sur un DVD+RW vierge, aucun problème, la gravure fonctionne.
Lorsque je tente de formater un DVD+RW, aucun problème.
Par contre lorsque je veux graver sur le DVD+RW juste après l'avoir formater, mon appli plante royalement (parfois je reussi a graver et parfois l'appli plante, ce n'est pas systématique....)

Je ne sais vraiment pas quoi faire...
Quelqu'un a-t-il deja eu ce type de probleme ?
Je peux vous donner mon code si nécessaire.
Je dois préciser que ce code, sur une autre machine, genere avant tout une erreur du type (je n'ai pas le message sous les yeux) : "une opération asynchrone est deja en cours...." lorsque je tente de formater un DVD+RW....

Merci beaucoup d'avance...
_________
###KRAMP

5 réponses

alias666 Messages postés 308 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 23 mars 2010
26 oct. 2004 à 16:34
Envoie ton code ont y vera déjà plus clair ... Sinon comment cela se fait il tu as dit que dès fois ca marche et dès fois non?? C'est chelou. :question)
C'est rapide net et sans douleur...
0
cs_kramp Messages postés 13 Date d'inscription mardi 7 mai 2002 Statut Membre Dernière intervention 5 novembre 2004
5 nov. 2004 à 10:39
voici enfin mon code...je suis désolé de ne pas l'avoir posté avant mais j'étais absent.

'###DECLARATIONS
Public WithEvents Nero As Nero
Public WithEvents Graveur As NeroDrive

Private tmpSaveFile As String
Private saveFile As String

'### FONCTIONS DE GRAVURE

'###FONCTIONS DE GRAVURE
Sub burnData()
    'Gestion des erreurs
    On Error GoTo gestionErreur

    'Lors du lancement de la gravure des donnees, on...

    '...initialise NERO
    '==================
        '...cree un objet Nero
        Set Nero = New Nero

        Dim Lecteurs As NeroDrives
        '...recupere la liste des graveurs de DVD+RW de l'ordi
        Set Lecteurs = Nero.GetDrives(NERO_MEDIA_DVD_P_RW)

        Dim i As Integer
        '...selectionne le graveur qui supporte les RW
        For i = 0 To Lecteurs.Count - 1
            If Lecteurs(i).DevType = NERO_SCSI_DEVTYPE_WORM Then Exit For
        Next
        Set Graveur = Lecteurs(i)

        '...initialise le repertoire des donnees du cd
        Dim cdFolder As NeroFolder
        Set cdFolder = New NeroFolder

        '....initialise la piste ISO
        Dim pisteISO As NeroISOTrack
        Set pisteISO = New NeroISOTrack
        pisteISO.RootFolder = cdFolder

    '...test si il y a plusieurs disques
    '=======================================
        'Si il n'y a qu'un seul disque a graver, on...
        '...initialise le numero du disque
        discNum = 1
        '...indique l'etat
        saveForm.setState BurnDVD
        '...le met dans le nero iso track
        Dim fichierNero As NeroFile
        Set fichierNero = New NeroFile
        cdFolder.Files.Add fichierNero
        fichierNero.name = tmpSaveFile
        fichierNero.SourceFilePath = "D:" & fichierNero.name
        '...initialise le nom de la piste iso
        pisteISO.name = "ASP63_" & Format(Now, "yyyy-mm-dd")

    '...initialise la gravure
    '========================
    '...options de gravure de la piste ISO : system de fichier iso + joliet
    pisteISO.BurnOptions = NERO_BURN_OPTION_CREATE_ISO_FS + NERO_BURN_OPTION_USE_JOLIET

    '...lancement de la gravure
    Graveur.BurnIsoAudioCD "", "", False, pisteISO, Nothing, Nothing, _
                           NERO_BURN_FLAG_BUF_UNDERRUN_PROT + _
                           NERO_BURN_FLAG_DETECT_NON_EMPTY_CDRW + _
                           NERO_BURN_FLAG_WRITE, 0, NERO_MEDIA_DVD_P_RW

    Exit Sub

gestionErreur:
    'En cas d'erreur avec nero
    Nero.Abort
    MsgBox "Erreur lors du lancement de la gravure de la sauvegarde.", vbCritical + vbOKOnly, 
End Sub

Sub eraseDisc()
    'Pour effacer un disque, on...
    '...indique l'etat
    saveForm.setState EraseDVD
    '...l'efface
    Graveur.eraseDisc True, NERO_ERASE_MODE_DEFAULT
End Sub

'#EVENEMENTS
 '#GRAVEUR
Private Sub Graveur_OnDoneErase(ok As Boolean)
    'Lorsque l'effacage est termine, on...
    '...test si il a ete correctement termine
    If ok Then
        'Si termine correctement, on...
        '...ejecte le CD
            'Graveur.EjectCD
        '...recharge le CD
            'Graveur.LoadCD
        '...lance la gravure
        If nbDisc = 1 Then
            burnData False
        ElseIf nbDisc > 1 Then
            burnData True
        End If
    ElseIf Not ok Then
        'Si termine non correctement, on...
        '...annule la gravure
        Nero.Abort
        '...ferme la fenetre
        saveForm.closeIt
        '...affiche un message
        MsgBox "Erreur lors de l'effacage du disque.", vbCritical + vbOKOnly
    End If
End Sub

 '#NERO
Private Sub Graveur_OnDoneBurn(StatusCode As NEROLib.NERO_BURN_ERROR)
    'Lorsque la gravure est terminee, on...
    '...test comment elle s'est terminee
    Select Case StatusCode
        Case NERO_BURN_OK 'Avec succes !
                'Si il n'y a qu'un disque, on...
                '...ferme la fenetre
                saveForm.closeIt
                '...indique que la gravure s'est termine avec succes
                MsgBox "La sauvegarde est terminée.", vbInformation + vbOKOnly
        Case Else
    End Select
End Sub

Private Sub nero_OnNonEmptyCDRW(Response As NEROLib.NERO_RESPONSE)
    'Si le disque n'est pas vierge, on...
    '...annule la gravure
    'Nero.Abort
    '...efface le cd
    saveForm.eraseDisc
End Sub


Ce code fonctionne "parfois" (ce qui est tout simplement incroyable !!!).
Dans la plupart des cas :
-si le DVD+RW est vierge, la gravure se lance directement et fonctionne,
-si le DVD+RW n'est pas vierge, le formatage est lancé et fonctionne corretement, lors du passage a l'etape suivante, l'application (ou VB6 en non compilé) plante sauvagement !
Toutefois, de temps en temps, le formatage plus gravure fonctionne (je crois que c'est lors de la premiere tentative suivant un redémarrage de la machine, je me suis donc dit que le processus imapi.exe se terminait mal, j'ai donc rajouté du code pour le tuer mais cela ne change rien...)

Quelqu'un connait-il la solution ?
_________
###KRAMP
0
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
2 mars 2005 à 09:39
J'arrive un peu tard mais je tombe la dessus par hasard.

Set Nero = New Nero
Set Lecteurs = Nero.GetDrives(NERO_MEDIA_DVD_P_RW
Set Graveur = Lecteurs(i)
Set cdFolder = New NeroFolder
Set pisteISO = New NeroISOTrack
Set fichierNero = New NeroFile

Je ne vois nul part de :

Set Nero = Nothing
Set Lecteurs = Nothing
Set Graveur = Nothing
Set cdFolder = Nothing
Set pisteISO = Nothing
Set fichierNero = Nothing

Bonne prog
++
0
Utilisateur anonyme
19 oct. 2007 à 00:02
J'ai exploré un peu la source exemple fournie dans le SDK de Nero,
Il semble que la ligne :
    Set Lecteurs = Nero.GetDrives(NERO_MEDIA_DVD_P_RW)
fasse planter le programme lors de la deuxieme execution dans le programme,
il doit falloir decharger l'objet lecteurs et nero d'une maniere ou d'une autre,
en tout cas, j'ai essayé les :
    Set Nero = Nothing
    Set Lecteurs = Nothing
mais rien a faire, le programme plante quand meme
Si quelqu'un a une idée pour faire avancer le Schmilblick... elle sear bien venue.

A++
AdCr
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
clamou Messages postés 9 Date d'inscription lundi 30 avril 2007 Statut Membre Dernière intervention 16 mai 2009
28 avril 2008 à 18:07
Salut tous ,je m'appel clamou et je suis un etudient a l'ENSI en tunis .j'aim vous mes aider a bien comprendre pleussieur notion.
0
Rejoignez-nous