Graver un cd / dvd avec nerocmd

Contenu du snippet

en complement a la source de pcpunch, une version un peu plus complete pour graver avec nerocmd.
a savoir : nerocmd ne marche que avec la version 6 ou + de nero

avantage par rapport a la gravure integrer a win xp utilisable par les api : ben ...justement, ca fonctionne pas que sur win xp ;)

Source / Exemple :


Rem declaration des api qui permettent d'attendre la fin de l'execution avant de passer a autre chose

Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessID As Long) As Long
Private Const SYNCHRONIZE = &H100000
Private Const WAIT_TIMEOUT = &H102&

Private Sub burn_it()

Dim driveletter As String
 driveletter = "d"    ' obligatoire :la lettre du lecteur cd

Dim en_plus_dvd  As String
en_plus_dvd = " --DVD"  ' a mettre obligatoirement si on grave un cd ,sinon en_plus_dvd="" ( sinon, ca plante nerocmd :( )

Dim Import  As String
Import = " --import " ' pour importer les sessions precedentes, sinon import=""

Dim enplus_finalise  As String
enplus_finalise = " --close_session"  ' pour finaliser la session

Dim ze_burn_path  As String
ze_burn_path = "c:\mon_dossier_a_graver\" ' emplacement du dossier a graver

Dim batch_action As String
 batch_action = App.Path + "\nerocmd --write --drivename " + drivelettre + en_plus_dvd + Import + enplus_finalise + " --real  --recursive --iso BEDOT " + Chr(34) + ze_burn_path + "*.*" + Chr(34)

Rem : la fonction --recursive permet de graver l'interieur des dossier, sous dossiers ....
Rem   --real permet de graver reellement, si on ne le met pas, ca fait juste une simulation
Rem   --iso BEDOT : a la place de BEDOT, mettez le nom de votre cd

Dim filenum As Long
       filenum = FreeFile
       Open App.Path + "\nerobatch.bat" For Output As filenum
       Print #filenum, batch_action
       Close filenum

 Démarre = Shell(App.Path + "\nerobatch.bat", vbHide)
        ProcessHandle = OpenProcess(SYNCHRONIZE, False, Démarre)
        retour = WaitForSingleObject(ProcessHandle, 1)
        
        Do While retour = WAIT_TIMEOUT
            retour = WaitForSingleObject(ProcessHandle, 1)
            DoEvents
            
        Loop
        retour = CloseHandle(ProcessHandle)

Rem pour la liste complete des fonctions : en mode dos, nerocmd.exe /?
rem vous pouvez ensuite tester la presence du fichier d'erreur et l'analyser par prog si vous voulez une confirmation de reussite
End Sub

Conclusion :


pour savoir si il y a des sessions a importer, si le cd est plein ...utilisez la fonction
"nerocmd.exe --cdinfos --drivename D > infos.txt"
puis analyser le fichier infos.txt

si vous avez des questions, vous pouvez me mailer, je repondrais, mais bon.... suis parfois un peu long a la detente , mais je reponds:(

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.