http://digilander.libero.it/Cenati Espellere il CD |
home | e-mail e contatti | Introduzione al sito | Cosa e' e come imparare VbScript |
|
|
|
|
|
Come espellere (eject) il CD facendo aprire il cassetto del lettore Far aprire il cassetto del lettore CD tramite un programma è una richiesta frequente nei gruppi di discussione dedicati a vari linguaggi. Sembra che il poter agire su qualcosa di meccanico stimoli entusiarmo ed ammirazione da parte degli utenti abituati a vedere solo output su video o su carta.
Il programma fa uso del Windows MediaPlayer, che posso ragionevolmente presumere che sia installato su tutti i pc. Con WMP è possibile espellere un cd sapendo già quale è la lettera relativa a quel drive. Il comando da dare (successivamente a quello per creare una istanza dell'oggetto MediaPlayer) è oWMP.cdromCollection.getByDriveSpecifier("e:").Eject Nell'esempio proposto sotto, il comando è spezzato su due righe. La prima crea un riferimento al drive E:, mentre la seconda utilizza il metodo Eject per aprire il cassetto. Se non conosco a priori la lettera che identifica il lettore di CD posso facilmente chiederne a WMP l'elenco. Esiste una lista dei drive cd-rom che si può ottenere dall'oggetto CdRomCollection. Restituirà un riferimento che possiede alcune proprietà che ora descrivo. oWMP.CdRomCollection.Count contiene il numero di lettori CD collegati al pc. Se è maggiore di zero significa che ne abbiamo almeno uno. Come spesso accade, le collezioni sono numerate partendo da zero. Quindi abbiamo se abbiamo due unità collegate saranno numerate zero e uno. Se ne abbiamo una sola (il caso più frequente) sarà la numero zero. Per questo motivo nel programma mi accerto di avere un numero di drive maggiore di zero e poi vi accedo con un ciclo for-next che va da zero al numero di drive (ottenuto con Count) meno uno. Per sapere che lettera ha il lettore CD devo leggere la proprietà oWMP.cdromCollection.item(i).driveSpecifier Per aprire il cassetto uso invece il metodo colCDROMs.Item(i).Eject Tipicamente si effettua l'azione sul drive numero zero, in quanto è l'unico presente. Tanto programma è solo per mostrare qualche funzione in più, dato che sarebbe stato sufficiente creare l'istanza di mediaplayer ed espellere il cassetto del drive cd-rom zero. Nella stragrande maggioranza dei casi funzionerebbe senza aver bisogno di controllare se sul pc esiste veramente un lettore cd. Per fare il tutto basterebbe anche una singola riga di codice come questa: createObject("WMPlayer.OCX.7").cdromCollection.Item(0).Eject Copia il programma riportato qui sotto in un file con estensione ".vbs" oppure scarica l'archivio zip contentente lo script. '***************************************************** ' eject.vbs ' Cenati Giovanni - http://digilander.libero.it/Cenati ' Codice liberamente utilizzabile citando il sito ' Questo script trova tutti i lettori cd collegati ' al pc e per ciascuno di essi chiede se si vuole ' aprire il cassetto e poi richiuderlo. '***************************************************** Set oWMP = CreateObject("WMPlayer.OCX.7") Set colCDROMs = oWMP.cdromCollection 'Chiede a MediaPlayer l'elenco dei drive cdrom 'oppure posso specificarne la lettera come qui sotto. 'Set oCD = oWMP.cdromCollection.getByDriveSpecifier("e:") 'oCD.Eject if colCDROMs.Count > 0 then for i=0 to colCDROMs.Count - 1 'Chiede a MediaPlayer la lettera dell'i-esimo drive cdrom strDrive= oWMP.cdromCollection.item(i).driveSpecifier strQuestion = "Espellere drive " & strDrive & "?" answer= msgbox (strQuestion, vbOKCancel) if answer= vbOK then colCDROMs.Item(i).Eject strQuestion = "Richiudere drive " & strDrive & "?" answer= msgbox (strQuestion, vbOKCancel) if answer= vbOK then colCDROMs.Item(i).Eject end if next 'drive nella collezione dei drive CDROM end if wscript.quit
Giovanni Cenati
|
|
|
|
© Cenati Giovanni 2004/2010 - http://digilander.libero.it/Cenati - Reventlov at Katamail com
|
|