Sincronizza Indice |
Scarica il progetto |
Testo dell'articolo |
Stampa l'articolo |
In alcuni programmi multimediali può essere piacevole aprire e chiudere il cassetto del lettore CD per invitare l'utente ad inserire un disco nell lettore. Si tratta di un'operazione di cui è meglio non abusare, ma in quei rari casi in cui fosse necessaria un'operazione del genere, le funzioni MCI provvedono una via molto semplice.
Il progetto si compone di un solo form con due semplici CommandButtondi nome cmdApriCD e cmdChiudiCD e di un breve e semplice codice:
Innanzitutto è necessario definire i tipi, le costanti e le funzioni API: alla riga 3 viene definitivo un nuovo tipo di dati denominato MCI_OPEN_PARMS che verrà utilizzato per contenere i parametri sull'unità CD da comandare. Alle righe 11-16 sono definite varie costanti API che saranno utilizzate più avanti dalla funzione mciSendCommand, dichiarata alla riga 18.
Dichiariamo anche una variabile di nome openParams del tipo MCI_OPEN_PARAMS definito in precedenza.
Prima di eseguire un comando su un'unità MCI è fondamentale aprire un handle a tale unità utilizzando la solita funzione mciSendCommand; al termine del suo utilizzo sarà opportuno chiudere lo stesso. Alla riga 23 viene specificato l'ID della periferica da utilizzare il cui tipo è definito alla riga successiva (cdaudio). Forniti i parametri necessari sarà possibile richiedere l'apertura dell'handle alla periferica tramite la funzione API mciSendCommand specificando come comando (messaggio) il valore della costante MCI_OPEN. I parametri aggiuntivi da fornire riguardano il tipo di argomento passato, nel nostro caso una struttura di tipo MCI_OPEN_PARMS, identificata dalla costante API MCI_OPEN_TYPE ed un puntatore (infatti l'argomento è dichiarato con ByRef) alla variabile openParams. Non appena effettuata l'apertura del dispositivo MCI il membro wDeviceID riceverà il vero ID della periferica, precedentemente inizializzato a 0. In maniera analoga, alla chiusura del form, sarà necessario chiudere l'handle aperto utilizzando sempre la funzione mciSendCommand passando come parametri l'ID del dispositivo aperto e come comando (messaggio) il valore della costante MCI_CLOSE. A tutti gli altri argomenti può essere passato un valore di zero.
L'apertura e la chiusura del cassetto del lettore CD si differenziano soltanto per un parametro inviato alla funzione mciSendCommand. Infatti in entrambi i casi sarà necessario fornire l'ID della periferica ed il messaggio corrispondente alla costante MCI_SET. La differenza sta nel terzo argomento della funzione: in caso di apertura dovrà essere passata la costante MCI_SET_DOOR_OPEN, mentre, in caso di chiusura la costante da passare sarà MCI_SET_DOOR_CLOSED. Ci penserà la funzione MCI a richiedere l'apertura o la chiusura
del cassetto del CD.
|
A volte è incredibile! Un problema legato a questa soluzione, però, sta nel fatto che l'apertura del cassetto avviene in maniera sincrona ovvero il programma interrompe la sua esecuzione durante l'operazione di apertura e di chiusura del cassetto del lettore CD. Fibia
FBI
|
Torna all'indice degli HowTo |