• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Guida Creare un Masterizzatore in vb06

industriale

Utente Assiduo
Autore del topic
8 Luglio 2008
750
57
Miglior risposta
0
Premessa
Nero Burning Rom è uno dei programmi più diffusi per la scrittura di dati, musica, video e altro su CD e DVD e la versione 6.0, non solo presenta un'interfaccia grafica completamente rinnovata e intuitiva, riconosce tutti i masterizzatori CD e DVD più recenti ed fornisce decine di utili strumenti, ma anche consente l'interazione con i linguaggi di programmazione più attuali affinché i programmatori possano creare le proprie applicazioni Nero-based per masterizzare i propri dati.

Per fare ciò è stato rilasciato il Nero SDK v 1.0.3, scaricabile (in inglese) all'indirizzo
Perfavore, Entra oppure Registrati per vedere i Link!
, che contiene una serie di documenti in formato .pdf ed alcuni esempi in Visual Basic e Visual C++. La programmazione dei componenti di Nero avviene attraverso alcune librerie, tra cui NeroAPI.Dll e NeroCOM.Dll, più un ulteriore file chiamato NeroCMD.Exe per l'esecuzione da riga di comando.
La libreria NeroAPI.Dll, come dice il nome, contiene una serie di funzioni API che vengono utilizzate dall'applicazione Nero e che possono essere riutilizzate dal programmatore per creare la propria applicazione di masterizzazione basata su Nero, ma è (ovviamente...) rivolta ai programmatori di Microsoft Visual C++, così come esplicitato nella documentazione.
La libreria NeroCOM.Dll è una libreria dei tipi progettata appositamente per i linguaggi di programmazione quali Visual Basic, Delphi e tutti quei linguaggi che sfruttano le Dll/ActiveX.

In questo articolo mi riferirò quindi esclusivamente alla libreria NeroCOM.Dll, in un'applicazione di esempio scaricabile dall'Area Download del sito, che provvede a creare un CD-Rom dati scrivendovi dei files, realizzata modificando il progetto di esempio che viene fornito nel Nero SDK.
La grossa pecca di questo Software Development Kit è il fatto che largo spazio sia dedicato allo sviluppo in C++ con diversi documenti e numerosi esempi applicabili a diverse casistiche di masterizzazione, mentre l'unico esempio disponibile in codice sorgente VB mostra esclusivamente come creare un CD Audio con un'unica traccia, derivata da un file .Mp3. Pertanto ho cercato di raccogliere quante più informazioni sul Nero SDK Forum dove molti utenti propongono dei quesiti ai quali rispondono i creatori di Nero SDK. Vi consiglio di visitare il forum, anch'esso in inglese, dove si possono reperire numerose informazioni anche se non è permesso postare delle domande e anche se la navigazione è continuamente disturbata da fastidiosi pop-up che pubblicizzano prodotti per la creazione di DVD professionali.
Nell'SDK è contenuto un file, chiamato NeroCOM.Pdf, che illustra in maniera esaustiva, seppur in lingua inglese, tutte le caratteristiche della libreria ed è sicuramente il miglior punto di partenza per studiare lo sviluppo di un'applicazione basata sui componenti di Nero 6.

Desidero aggiungere che l'applicazione di esempio da me realizzata non consente funzioni avanzate come quella di creare una struttura a directory sul CD o l'utilizzo della tecnica del drag & drop per la creazione intuitiva del cd, in quanto il mio intento è quello di fornire le basi per scrivere su CD più files in una sessione ISO dati a differenza dell'esempio "ufficiale" limitato unicamente ad un cd audio peraltro con un solo file. Ulteriori e più utili informazioni possono essere reperite nel forum dell'Sdk e non sarà difficile implementare le varie soluzioni se si ha un minimo di conoscenza di lingua inglese.

Per la realizzazione dell'applicazione ho utilizzato la versione trial di Nero 6 scaricabile dal sito, completamente funzionante. Requisito necessario per l'utilizzo di NeroCom.Dll è, infatti, che sulla macchina di destinazione sia installata una versione funzionante di Nero 6 (trial o completa), in quanto la sola Dll ActiveX non è sufficiente poiché la stessa interagisce con i componenti di Nero che provvedono alla creazione dei supporti. Per l'utilizzo del componente è necessario leggere il contratto di licenza dell'applicazione e i dati riportati nella documentazione dell'SDK. Ricordo che, qualora utilizziate la versione trial, al termine dei 30 giorni di prova sarà necessario acquistare la licenza del prodotto.

Una semplice applicazione
Nei prossimi passaggi farò continui riferimenti all'applicazione di esempio a corredo di questo articolo, pertanto darò per scontato che l'abbiate scaricata.

L'unico form del programma contiene una TextBox nella quale l'utente specificherà l'etichetta del CD, la famosa label. Una casella combinata conterrà l'elenco delle periferiche disponibili tra cui masterizzatori, lettori e verosimilmente un masterizzatore virtuale detto image recorder, utilizzato per la creazione dei files immagine compatibili con lo standard ISO. Una ListBox conterrà l'elenco dei files che aggiungeremo alla compilation, una seconda TextBox esporrà i messaggi di sistema emessi da Nero nel corso del processo, mentre una barra di progresso indicherà il livello del procedimento di creazione del Cd. Da ultimi troverete dei pulsanti associati ad alcune operazioni che descriverò di seguito.

Operazioni preliminari
La prima operazione da compiere è creare un riferimento alla libreria NeroCom.Dll (menu Progetto/Riferimenti), e dichiarare le seguenti variabili nella finestra del codice:

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

L'oggetto nero è stato dichiarato WithEvents in quanto la classe espone degli eventi che permettono di controllare lo stato del processo di masterizzazione. Noterete come in realtà la gestione degli eventi occupi la maggior parte del codice, proprio perché il controllo sul processo deve essere totale e riguarderà eventuali errori e lo stato del processo, dall'inizio alla fine. I vari eventi da gestire sono i seguenti:

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Passiamo poi ad inizializzare gli oggetti e lo facciamo nell'evento Initialize del form. In questo modo, quando il form verrà caricato (evento Load) le informazioni sui dispositivi presenti saranno già disponibili:

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

La seguente semplice funzione NameFromPath separa il nome di un file dal pathname completo:

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Burn in progress
A questo punto passiamo a scrivere il codice per le varie azioni. Nell'applicazione di esempio potremo selezionare dei files, scrivere il CD, interrompere il processo e cancellare un CD-Rw. Il pulsante FileAdd permette di aggiungere files alla sessione, utilizzando il controllo SelectFileDialog:

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Il pulsante cmdAbort permette l'interruzione del processo di scrittura. E' questa, ovviamente, un'azione sconsigliata, in quanto il supporto potrebbe essere poi inutilizzabile:

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Quest'azione scatenerà l'evento drive_OnAborted, per il quale è stato in precedenza fornito il codice di gestione, che mostrerà un messaggio all'utente.
E veniamo ora alla parte più complessa, la scrittura dei dati sul CD. Queste operazioni vengono svolte alla pressione del pulsante cmdBurn. Ho inserito dei commenti all'interno del codice sotto riportato per renderne più agevole la comprensione:

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Relativamente a quest'ultimo codice è bene precisare alcuni aspetti:

non è presente una routine On Error Goto in quanto il rilevamento degli errori avviene tramite il run-time di Nero e gli errori vengono restituiti in una stringa, trasmessa automaticamente all'applicazione che, grazie agli eventi, li espone;
viene utilizzato il metodo BurnIsoAudioCD in quanto non è contemplato (!) il caso di una semplice scrittura di una sessione dati; pertanto, passando come argomenti valori nulli (il metodo richiamerà l'oggetto NeroFolder che contiene le varie informazioni), verrà creato un CD dati.
A questo punto sarà sufficiente fare click per creare il nostro CD dati. Vorrei altresì precisare che nel corso dei test da me effettuati (solo su CD-Rw), ho notato che il buon esito dell'operazione è dipeso da diverse marche di CD.

Cancellazione di un cd-rw
La cancellazione di un CD-Rw utilizza alcuni oggetti già visti in precedenza ed è un processo relativamente semplice. Questo processo viene eseguito alla pressione del pulsante cmdErase di cui riporto il codice:

Codice:
Perfavore, Entra oppure Registrati per vedere i codici!

Conclusioni
Spero che le informazioni contenute in questo articolo siano state sufficienti a far capire come agisce la libreria dei tipi NeroCom.Dll nelle operazioni di base. Come ho già detto, nell'SDK di Nero è presente un documento PDF relativo a questa libreria, nel quale sono minuziosamente descritti tutti gli eventi, le proprietà ed i metodi delle varie classi, anche se il mio consiglio rimane quello di visitare il Forum del Nero SDK, in quanto troverete domande e risposte relative a casi pratici, che non sono presenti nella documentazione.

Fonte: Visual-Basic