Graver un cd / dvd avec nerocmd

Soyez le premier à donner votre avis sur cette source.

Snippet vu 17 993 fois - Téléchargée 30 fois

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

Ajouter un commentaire

Commentaires

Messages postés
54
Date d'inscription
lundi 7 juillet 2003
Statut
Membre
Dernière intervention
6 février 2009

y'a un moyen simple qui devrait marcher :
tu lance le nerocmd grace a un "shell ()", et tu peux voir quand le shell se termine grace a un pointeur sur le process cree .

en tout cas en visual studio.
en windev, je sais po
une fois le proc fini, c bon, la gravure est ok

sinon, faut "rester calme et courtois ", je ne dirais donc pas ce que je pense de windev ;)
Messages postés
5
Date d'inscription
mardi 25 février 2003
Statut
Membre
Dernière intervention
3 mai 2006

Salut


j'ai également trouvé nerocmd bien pratique et j'en ai besoin pour une appli d'un de mes clients.

Je voulais savoir si quelqu'un a une idée pour récupérer les infos renvoyés par nerocmd.

pour l'instant je fais un truc du style ShellExecute("nerocmd.exe --plein de params >> output.txt")
ce qui permet à nerocmd d'écrire sa sortie dans un fichier et non plus à l'écran.

Mais c'est vraiment pas top parcequ'on peut pas savoir quand nero a fini de graver et donc il faut vérifier le fichier tt les x secondes.

voila, si qqun à une idéd

PS je suis sous windev mais ça ne change rien
Messages postés
86
Date d'inscription
jeudi 23 octobre 2003
Statut
Membre
Dernière intervention
21 juin 2007
2
Comme je l'ai dit dans mon post précédent, cette source m'a été très profitable...
J'aurais une petite question néanmoins :
j'ai créé une appli qui grave automatiquement des fichiers. Je voudrais imprimer également mes jaquettes (en lightscribe) en automatique, peut-on inclure l'impression d'une jaquette lightscribe via une commande de nero ???
J'ai épluché les paramètres de nerocmd.exe, mais sans rien trouver...

Quelqu'un saurait-il me répondre ????

D'avance merci... ;)
Messages postés
86
Date d'inscription
jeudi 23 octobre 2003
Statut
Membre
Dernière intervention
21 juin 2007
2
C'est pil poil ce que je cherche : à lancer une gravure automatiquement d'une source C# avec Nero...
Merci beaucoup, tu me sauves... :)
Messages postés
54
Date d'inscription
lundi 7 juillet 2003
Statut
Membre
Dernière intervention
6 février 2009

ben euh ...vi ...ca vient d'une source qui fait dans les 4 mega ....peut po balancer ca ici :(
ca vient de notre produit : www.be-dot.com
(un peu d'pub au passage, ca fait poo d'mal ;) )

pour les cd rw, c pile poil pareiil ...y'a meme une fonction dans nerocmd pour l'effacer
(cf nerocmd /? ou message si tu trouve po, je chercherais et te le mettrais ici )
Afficher les 8 commentaires

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.