Emanuele Mattei

Il Blog di Emanuele

My Links

Blog Stats

News

E-mail per eventuale contatto
E-mail






Supporta il blog offrendo una pizza o un caffè per informazioni fai click qui. Grazie :-)))




ClipArt del giorno:
Naviga attraverso più di 140.000 immagini e clip multimediali scaricabili gratuitamente, per arricchire i tuoi documenti Office.



E-mail per eventuale contatto
E-mail



Locations of visitors to this page



Le opere pubblicate in questo blog sono sotto la licenza Creative Commons. Attribuzione- No commerciale e no derivate.

Il libro che sto leggendo:






Settembre 2007 Dicembre 2007
Marzo 2008
Giugno 2008
Settembre 2008
Dicembre 2008


Pagina Hall Of Fame

Powered by  MyPagerank.Net

Categorie Articoli

Archivio

Categorie Post

Immagini

Sezione siti

Blog Amici

Office

Net

Siti Gratuiti

Siti vari

Tools

Elenco Siti

Il tempo a Roma

Programmi Gratuiti e Portatili

Masterizzare con la tecnologia .Net (VB.Net e C#) tramite il componente XPBurn

Riporto l'articolo scritto per il sito http://www.iprogrammatori.it/articoli/programmazione/art_masterizzare-con-la-tecnologia-net-trami_795.aspx

Introduzione
L’articolo illustrato qui di seguito, riporta una tecnica di come registrare i file su cd e dvd.
Il codice si può utilizzare sul sistema operativo Windows XP, Windows Vista e Windows 7, con un masterizzatore per CD e/o DVD.
La versione del Framework è 2.0 o superiore (3.X, 4.0)
Prima di tutto occorre scaricare dal seguente sito http://msdn.microsoft.com/en-us/vcsharp/aa336741.aspx il componente xpburn, il quale permette di gestire l’unita cd/Dvd in cui si trova il masterizzatore.
Dopo aver compilato il sorgente della dll, aggiungete al vostro progetto il riferimento alla dll xpburn,

Creazione dell’interfaccia
Inserite nella form, quattro pulsante, due controlli progress bar, cinque controlli label, due controlli listbox ed una casella di testo, la form dev’essere simile a quella illustrata nella figura 1.



 

Figura 1

La casella combinata Unità, avrà il compito di visualizzare le unità per la scrittura su cd, mentre il pulsante indicante i tre puntini "..." che si trova vicino a quello con la scritta Aggiungi, permette di selezionare i file dal proprio pc, che con il pulsante aggiungi  permette di aggiungere nel controllo listbox la lista dei file da registrare sul cd-rom.
Le due progress bar, indicano lo stato della preparazione e lo stato della scrittura su cd-rom.
Mentre i due pulsante masterizza ed espelli gestiscono l’unità, con il pulsante masterizza, si avvia la scrittura dei dati, mentre con il pulsante espelli apre il cassetto dell’unità.
Nella listbox situata nella parte inferiore della finestra, visualizza le varie operazioni in corso.
Stesura del codice.
Passiamo in visualizzazione codice, per scrivere il codice per  eseguire le varie operazioni.
Prima di tutto, aggiungiamo lo spazio dei nomi, del componente XPburn, aggiunto precedentemente.
Qui di seguito si riporta tale codice.

VB.Net

Imports XPBurn

C#

using XPBurn;

Si crea a livello di form, un oggetto di tipo XPBurnCD per la gestione degli eventi e dei metodi  per la gestione del CD.
Riportiamo dopo la dichiarazione di classe della form il codice per la creazione dell’oggetto XPBurnCD.

VB,Net

Private WithEvents ObjMasterizza As XPBurn.XPBurnCD

C#

private XPBurn.XPBurnCD ObjMasterizza;

Nell’evento load della form, dobbiamo caricare nella casella combinata delle unità, i nomi delle unità montante sul pc per la scrittura dei dati su CD.
Qui di seguito si riporta il codice delle suddette operazioni.

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim Intconta As Integer

        'carico in una combo i nomi delle unità dove si può masterizzare

        ObjMasterizza = New XPBurnCD()

        For Intconta = 0 To ObjMasterizza.RecorderDrives.Count - 1

            ObjMasterizza.BurnerDrive = ObjMasterizza.RecorderDrives(Intconta)

            cmbdrive.Items.Add(ObjMasterizza.ProductID)

        Next

        'imposto la prima unità

        If cmbdrive.Items.Count > 0 Then cmbdrive.SelectedIndex = 0

    End Sub

C#

private void Form1_Load(object sender, EventArgs e)

        {

 

            //carico in una combo i nomi delle unità dove si può masterizzare

            ObjMasterizza = new XPBurnCD();

            for (int Intconta = 0; Intconta < ObjMasterizza.RecorderDrives.Count; Intconta++)

            {

                ObjMasterizza.BurnerDrive = ObjMasterizza.RecorderDrives[Intconta].ToString();

                cmbdrive.Items.Add(ObjMasterizza.ProductID);

            }

 

            //imposto la prima unità

            if (cmbdrive.Items.Count > 0)

                cmbdrive.SelectedIndex = 0;

 

        }

Analiziamo il listato di codice precedente, le prima operazione è quella di inizializzare l’oggetto di tipo XPBurnCD, terminato ciò effettua un ciclo in cui rileverà le unità cd-rom o dvd, per la scrittura dei dati. I nomi saranno riportati nella casella combinata.

Per l’evento click del pulsante Espelli, dobbiamo aprire il cassetto dell’unità cd-Rom, questo avviene tramite il metodo Eject dell’oggetto di tipo XPBurnCD.
Si riporta il codice per l’evento click del pulsante espelli.

VB.Net

Private Sub BtnEspelle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnEspelle.Click

        'Espelle il cd

        ObjMasterizza.Eject()

    End Sub

C#

private void BtnEspelle_Click(object sender, EventArgs e)

        {

            //Espelle il cd

            ObjMasterizza.Eject();

        }

La classe XPBurnCd, mette a disposizione diversi eventi che permettono di gestire le varie fasi della scrittura dei dati su CD. Vediamoli qui di seguito alcuni.
L’evento per la prepazione, è il momento in cui si prepara a registrare, rilevando le informazioni dei file per poi registrarli sul Cd-rom è denominato PreparingBurn. L’evento BlockProgress ci fornisce indicazioni riguardante i file che vengono scritti su CD, mentre l’evento Addprogress è la fase di preparazione dei  dati su cd.
Con l’evento BurnComplete, possiamo sapere la conclusione della scrittura dei dati, mentre l’evento ClosingDisck è il momento in cui viene chiuso il CD.


Qui di seguito si riportano i vari esempi di eventi illustrati precedentemente
Evento di preparazione:

VB.Net

'evento che avviene prima di registrare. Prepara il cd

    Private Sub ObjMasterizza_PreparingBurn(ByVal nEstimatedSeconds As Integer) Handles ObjMasterizza.PreparingBurn

        lstTesto.Items.Add("Preparazione in corso....Tempo richiesto : " & nEstimatedSeconds)

 

    End Sub

 

C#

// evento che avviene prima di registrare. Prepara il cd

        private void ObjMasterizza_PreparingBurn(int nEstimatedSeconds)

        {

            lstTesto.Items.Add(("Preparazione in corso....Tempo richiesto : " + nEstimatedSeconds));

        }

Evento per la preparazione dei dati su CD.

VB.Net

Private Sub ObjMasterizza_AddProgress(ByVal nCompletedSteps As Integer, ByVal nTotalSteps As Integer) Handles ObjMasterizza.AddProgress

        'aggiornamento della barra

        PgbPreparazione.Maximum = nTotalSteps

        PgbPreparazione.Value = nCompletedSteps

    End Sub

 

C#

private void ObjMasterizza_AddProgress(int nCompletedSteps, int nTotalSteps)

        {

            // aggiornamento della barra

            PgbPreparazione.Maximum = nTotalSteps;

            PgbPreparazione.Value = nCompletedSteps;

        }


Evento  block Progress l’avanzamento di scrittura dei dati.

VB.Net

'evento che ci fornisce informazioni sullo stato della copia

    Private Sub ObjMasterizza_BlockProgress(ByVal nCompletedSteps As Integer, ByVal nTotalSteps As Integer) Handles ObjMasterizza.BlockProgress

        PgbScrittura.Maximum = nTotalSteps

        PgbScrittura.Value = nCompletedSteps

 

    End Sub

 

C#

// evento che ci fornisce informazioni sullo stato della copia

        private void ObjMasterizza_BlockProgress(int nCompletedSteps, int nTotalSteps)

        {

            PgbScrittura.Maximum = nTotalSteps;

            PgbScrittura.Value = nCompletedSteps;

        }

Evento  relative al completamento della scrittura dei dati.

 

VB.Net

'evento che si verifica quando ha completato di copiare su cd

    Private Sub ObjMasterizza_BurnComplete(ByVal status As System.UInt32) Handles ObjMasterizza.BurnComplete

        PgbScrittura.Maximum = 0

        PgbScrittura.Value = 0

        lstTesto.Items.Add("Operazione Completata")

 

    End Sub

C#

// evento che si verifica quando ha completato di copiare su cd

        private void ObjMasterizza_BurnComplete(System.UInt32 status)

        {

            PgbScrittura.Maximum = 0;

            PgbScrittura.Value = 0;

            lstTesto.Items.Add("Operazione Completata");

        }

 

Evento di chiusura del disco

 

VB.Net

'evento per la chiusura del cd

    Private Sub ObjMasterizza_ClosingDisc(ByVal nEstimatedSeconds As Integer) Handles ObjMasterizza.ClosingDisc

        lstTesto.Items.Add("Chiusura disco attendere..." & nEstimatedSeconds & " Secondi")

    End Sub

C#

// evento per la chiusura del cd

        private void ObjMasterizza_ClosingDisc(int nEstimatedSeconds)

        {

            lstTesto.Items.Add(("Chiusura disco attendere..."

                            + (nEstimatedSeconds + " Secondi")));

        }

 

Siamo giunti quasi alla conclusione della stesura del codice.
Nel momento in cui viene selezionata l’unità per la scrittura del cd, dobbiamo impostare la proprietà RecorderDrivers, con il nome dell’unità CD-Rom.
Si riporta il codice delle sopraindicate operazioni.

VB.Net

Private Sub cmbdrive_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbdrive.SelectedIndexChanged

        'scelta dell'unità per masterizzare

        ObjMasterizza.BurnerDrive = ObjMasterizza.RecorderDrives(cmbdrive.SelectedIndex).ToString

    End Sub

C#

  private void cmbdrive_SelectedIndexChanged(object sender, EventArgs e)

        {

            //scelta dell'unità per masterizzare

            ObjMasterizza.BurnerDrive = ObjMasterizza.RecorderDrives[cmbdrive.SelectedIndex].ToString();

        }

Il pulsante aggiungi, dovrà inserire nel controllo listbox, il nome del file (contenuto nella casella di testo) mentre per l’oggetto di tipo XPBurn, tramite il metodo AddFile impostiamo il percorso e nome del file da registrare ed in quale posizione sul cdrom registrarlo. Si fa presente, che nel caso si imposta un percorso  di un file situato in sottocartelle, queste  verranno create (se non presenti )  nel CD, nel caso viene specificato nel secondo parameto del metodo AddFile
Mentre il pulsante trova (quello con i tre puntini “…” ) dovrà visualizzare a video una finestra di dialogo per la selezione dei file.
Qui di seguito si riportano i frammenti di codice delle suddette operazioni.

VB.Net

Private Sub btnaggiungi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnaggiungi.Click

        If Not System.IO.File.Exists(txtfile.Text) Then Exit Sub

        'aggiungo i file da copiare su cd

        ObjMasterizza.AddFile(txtfile.Text, txtfile.Text)

        lstFile.Items.Add(txtfile.Text)

    End Sub

 

    Private Sub btntrova_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btntrova.Click

        Dim DlgApri As New OpenFileDialog()

        'cerco i file da copiare

        If DlgApri.ShowDialog = DialogResult.OK Then txtfile.Text = DlgApri.FileName

    End Sub

C#

 

private void btnaggiungi_Click(object sender, System.EventArgs e)

        {

            if (!System.IO.File.Exists(txtfile.Text))

            {

                return;

            }

            // aggiungo i file da copiare su cd

            ObjMasterizza.AddFile(txtfile.Text, txtfile.Text);

            lstFile.Items.Add(txtfile.Text);

        }

 

        private void btntrova_Click(object sender, EventArgs e)

        {

            OpenFileDialog DlgApri = new OpenFileDialog();

            // cerco i file da copiare

            if ((DlgApri.ShowDialog() == DialogResult.OK))

            {

                txtfile.Text = DlgApri.FileName;

            }

        }

 

 

Nell’evento click del pulsante per la scrittura dei file, dobbiamo avviare la scrittura su CD. Questo avviene tramite l’esecuzione del metodo RecordDisk , il quale accetta due parametri, il primo, indica se effettuare un test (se impostato a true) mentre il secondo parametro, espelle il cd al termine della scrittura dei dati.
Di seguito riportiamo le sopraccitate operazioni.

VB.Net

 

Private Sub BtnCopia_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnCopia.Click

        Try

            'true test simulazione

            'metodo che avvia la copia su cd il primo valore se è settato a true fa un test, il secondo espelle il cd a termine operazione

            ObjMasterizza.RecordDisc(False, True)

        Catch ex As XPBurnException

            MessageBox.Show(ex.Message)

 

        End Try

    End Sub

C#

private void BtnCopia_Click(object sender, EventArgs e)

        {

            try

            {

                // true test simulazione

                // metodo che avvia la copia su cd il primo valore se è settato a true fa un test, il secondo espelle il cd a termine operazione

                ObjMasterizza.RecordDisc(false, true);

            }

            catch (XPBurnException ex)

            {

                MessageBox.Show(ex.Message);

            }

        }

Conclusioni

L’articolo ha voluto affrontare in maniera semplice ma dettagliata alcuni casi dell’utilizzo della dll XpBurn (http://msdn.microsoft.com/en-us/vcsharp/aa336741.aspx ) per la registrazione dei dati su supporti dischi, quali CD.
Tramite la voce Download potete scaricare oltre ai sorgenti relativo all’articolo per entrambi i linguaggi di programmazione, anche i sorgenti della libreria e la guida sull’utilizzo di tale componente.

Download

?>

posted on sabato 30 gennaio 2010 18.17