Graver un CD/DVD
Graver un CD/DVD
Bonjour à tous
Est il possible de graver un cd en code Pb?
Merci
Est il possible de graver un cd en code Pb?
Merci
Win7 (x64) 64 bits Pb 5.72
Re: Graver un CD/DVD
Code : Tout sélectionner
Est il possible de graver un cd en code Pb?
Je m'étais lancé dessus, y a longtemps quand j'avais XP mais il me semble qu'il y avait un problème qu'il faut prendre en compte, en effet il est permis à l'utilisateur de désactiver cet assistant, faudrait donc retrouver l'entrée dans le registre pour avoir un code fiable.
Re: Graver un CD/DVD
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
Créez ou modifiez la valeur DWORD du nom de NoCDBurning et donnez lui la valeur 1 (si vous souhaitez réactiver le logiciel de gravure par la suite, remettez cette valeur à 0)
Rédémarrer Vista
Re: Graver un CD/DVD
Cette histoire de registre peut être important car apparemment pas mal d'éditeur de logiciel de gravure recommande de le désactiver, est ce que c'est toujours un problème maintenant, je ne sais pas.
Re: Graver un CD/DVD
Cela donne le code suivant à compléter, il faudrait rajouter le test de la clé du registre (je ne sais pas faire), et rajouter les fonctions de suppression des fichiers déjà présents dans le dossier ainsi de la copie des fichiers:
Ce code n'a pas été tester (pas le temps pour le moment)
Ce code n'a pas été tester (pas le temps pour le moment)
Code : Tout sélectionner
CoInitialize_(0)
If CoCreateInstance_(?CLSID_CDBurn, 0, 1, ?IID_ICDBurn, @object.ICDBurn) >= 0
If object <> 0
If object\HasRecordableDrive(@pfHasRecorder) >= 0
; Permet de tester si un graveur de disque est présent, si oui = 1
If pfHasRecorder = 1
DriveLetter.s=Space(4)
If object\GetRecorderDriveLetter(@DriveLetter, 4) >= 0
DriveLetter = Trim(DriveLetter)
; Permet de retrouver la lettre du graveur
If DriveLetter <> ""
Debug DriveLetter
Directory.s = Space(#MAX_PATH)
SHGetSpecialFolderPath_(#Null, @Directory, #CSIDL_CDBURN_AREA, #False)
Directory = Trim(Directory)
If Directory <> ""
; Permet de retrouver le dossier où copier les fichiers et/ou dossiers
Debug Directory
;------------------------------------------------------------------------------
; là il faut premièrement vérifier que le dossier est vide sinon le vider
; puis copier les fichiers que l'on souhaite graver
; Puis on lance l'assistant de gravure
;------------------------------------------------------------------------------
If object\Burn(#Null) >= 0
Debug "Assistant lancé"
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
object\Release()
EndIf
EndIf
CoUninitialize_()
DataSection
CLSID_CDBurn:
Data.l $fbeb8a05
Data.w $beee, $4442
Data.b $80, $4e, $40, $9d, $6c, $45, $15, $e9
IID_ICDBurn:
Data.l $3d73a659
Data.w $e5d0, $4d42
Data.b $af, $c0, $51, $21, $ba, $42, $5c, $8d
EndDataSection
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Graver un CD/DVD
Fonctionne UNIQUEMENT sous windows7 et en principe windows8
Le code est volontairement minimaliste pour ne montrer que le principe de la sauvegarde. Vous pouvez utiliser un CD-R pour enregistrer. La suppression n'est pas prévu mais vous pouvez le faire manuellement
La lecture récursive des dossiers n'est pas prévu dans ce code.
j'ajouterais un code de sauvegarde threadé ulterieurement.
Le code est volontairement minimaliste pour ne montrer que le principe de la sauvegarde. Vous pouvez utiliser un CD-R pour enregistrer. La suppression n'est pas prévu mais vous pouvez le faire manuellement

La lecture récursive des dossiers n'est pas prévu dans ce code.
Code : Tout sélectionner
Enumeration Window
#Mainform
EndEnumeration
Enumeration Gadgets
#ListFiles
#FileSelect
#Save
#Finalize
EndEnumeration
Define.l Event, GEvent
Global WindowStyle.i=#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered
Global Unit.s = "F:", CR.s = Space(255)
Procedure IsMediaPresent()
mciSendString_("status cdaudio media present", CR, 255, 0)
If CR="false"
ProcedureReturn #False
Else
ProcedureReturn #True
EndIf
EndProcedure
Procedure FileSelect()
Protected File.s
File = OpenFileRequester("Select File", "","", 0, #PB_Requester_MultiSelection)
While file
AddGadgetItem(#ListFiles, -1, File)
File = NextSelectedFileName()
Wend
EndProcedure
Procedure Save()
Protected n, file.s
If IsMediaPresent()
For n=0 To CountGadgetItems(#ListFiles)-1
File = GetGadgetItemText(#ListFiles, n)
If CopyFile(File, Unit+GetFilePart(File))
SetGadgetItemText(#ListFiles, n, "Ok", 1)
EndIf
Next
While CR<>"stopped"
mciSendString_("status cdaudio mode", CR, 255, 0)
Wend
MessageRequester("Information", "Sauvegarde terminée" + #CRLF$+ "Vous pouvez finaliser ou fermer l'application")
Else
MessageRequester("Information", "Il n'y a pas de média dans le graveur")
EndIf
EndProcedure
Procedure Finalize()
mciSendString_("set CDAudio door open", "", 0, 0)
End
EndProcedure
Procedure Open_MainForm()
OpenWindow(#Mainform, 0, 0, 500, 400, "Sauvegarder sur un cd-rom", WindowStyle)
ListIconGadget(#ListFiles, 10, 10, 480, 350, "File", 380)
AddGadgetColumn(#ListFiles, 1, "Status", 50)
ButtonGadget(#FileSelect, 10, 370, 80, 22, "Select File")
ButtonGadget(#Save, 100, 370, 80, 22, "Save")
ButtonGadget(#Finalize, 190, 370, 80, 22, "Finalize")
EndProcedure
Open_MainForm()
BindGadgetEvent(#FileSelect, @FileSelect())
BindGadgetEvent(#Save, @Save())
BindGadgetEvent(#Finalize, @Finalize())
BindEvent(#PB_Event_CloseWindow, @Finalize())
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Graver un CD/DVD
Après il y a CreateCD c'est un exécutable en ligne de commande, assez facile d'accès.
Tu le glisse avec ton exe et tu l'utilise avec RunProgramm
@++
Tu le glisse avec ton exe et tu l'utilise avec RunProgramm
@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Re: Graver un CD/DVD
Merci à tous pour votre aide, je vais tester ce dernier code de falsam bien que j'ai pas win 7 installé sinon j'installerais peut être win7 sur mon portable pour tester.
Merci
Merci
Win7 (x64) 64 bits Pb 5.72
Re: Graver un CD/DVD
venom a écrit :Après il y a CreateCD c'est un exécutable en ligne de commande, assez facile d'accès.
Tu le glisse avec ton exe et tu l'utilise avec RunProgramm
@++
+1 , pourquoi chercher a réinventer la roue

lorsque je fait un utilitaire , je commence toujours par chercher si je ne trouve pas un prg en command-ligne
parceque c'est vrais, il en existe pleins , de gratuit , et tres efficace

apres cela nous fait juste faire l'interface ... le "Front End" qu'on dit, je crois

- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Graver un CD/DVD
Ouivenom a écrit :Après il y a CreateCD c'est un exécutable en ligne de commande, assez facile d'accès.
Tu le glisse avec ton exe et tu l'utilise avec RunProgramm

J'ai proposé une solution 100% Pure Basic qui permet d'utiliser les fonctions de la bibliothèque FileSystem (CopyFile() par exemple) pour copier des fichiers sur un cd-rom.
Ce mode permet de copier autant fois qu'on le souhaite des fichiers sur un CD-RW mais aussi sur CD-R tant qu'on ne finalise pas la session d'écriture (Windows7 et Windows8).
Je ne pense pas que ce code fonctionne sous XP et dans ce cas CreateCD.exe en ligne de commande me parait plus adéquate effectivement

Parce que j'avais envie d'essayer cette façon de faire ..... non maisDobro a écrit :+1 , pourquoi chercher a réinventer la roue![]()

Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Graver un CD/DVD
c'etait pas une Vraie Question .. plutot une introspection 

- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Graver un CD/DVD
ha oui toi aussi ? HéhéDobro a écrit :c'etait pas une Vraie Question .. plutot une introspection
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%