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

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

home | e-mail e contatti | Introduzione al sito | Cosa e' e come imparare VbScript