PDA

Visualizza versione completa : Codice per aprire il lettore cd


Alhazred
27-11-2002, 13.51.47
Ho un lettore cd al quale si è rotto il pulsante per l'apertura dello sportellino, ora per farlo sono costretto a infilare un qualche oggetto nel buco che è rimasto.
Dato che però mi sembra una soluzione poco ortodossa e non potendo riincollare il pulsante, mi chiedevo se esistesse il modo di aprire lo sportellino tramite uno script VB o altro.
Nel caso si potesse, mi scrivereste il codice per farlo?
Il lettore è associato alla lettera g:

Grazie.

LoryOne
27-11-2002, 16.32.14
Mi pare che se clicchi sull'icona del CD-ROM sul Desktop di Windows con il tasto sinistro, dovrebbe esserci una voce chiamata "Espelli"

Se clicchi li sopra, lo sportello dovrebbe aprirsi.
Se non funziona, anche richiamando l'API corretta, ci sarebbe poco da fare.

Prova a vedere se lo espelle così.
Intanto mi dedico alla ricerca della chiamata API.

LoryOne
27-11-2002, 17.09.52
Declare Function mciSendString _
Lib "winmm.dll" Alias "mciSendStringA" _
(ByVal lpstrCommand As String, _
ByVal lpstrReturnString As Long, _
ByVal uReturnLength As Long, _
ByVal hwndCallback As Long) As Long


Routine che apre o chiude il cassetto del CD:

Sub SetCD(ByVal OpenCD As Boolean)

'Apre il cassetto...
If OpenCD Then
mciSendString "set CDAudio door open", 0, 0, 0
Else
'o lo chiude
mciSendString "set CDAudio door closed", 0, 0, 0
End If
End Sub

Deep73
27-11-2002, 18.50.33
Originariamente inviato da LoryOne
Declare Function mciSendString _
Lib "winmm.dll" Alias "mciSendStringA" _
(ByVal lpstrCommand As String, _
ByVal lpstrReturnString As Long, _
ByVal uReturnLength As Long, _
ByVal hwndCallback As Long) As Long


Routine che apre o chiude il cassetto del CD:

Sub SetCD(ByVal OpenCD As Boolean)

'Apre il cassetto...
If OpenCD Then
mciSendString "set CDAudio door open", 0, 0, 0
Else
'o lo chiude
mciSendString "set CDAudio door closed", 0, 0, 0
End If
End Sub

interessante.... ma se hai + cd? :D Ora spulcio le API (bzzzzzzzzz :cool: )

LoryOne
27-11-2002, 20.03.42
X Deep73

C'è da impostare l' ID del device sul quale vuoi agire.
Se dai un'occhiata alle strutture te ne accorgi.

Una cosa che non ho capito è come fare ad aprire lo sportello del masterizzatore.

Se ci riesci fammi sapere.

Ciao

:)

TyDany
27-11-2002, 20.07.22
Davvero molto molto interessante questa cosa, ovviamente al posto dei tre 0 ci vanno i numeri per identificare il device Giusto? Sapendo come fare dovrei riuscire a far aprira anche gli scsi o mi sbaglio?

Deep73
27-11-2002, 20.24.58
Originariamente inviato da LoryOne
X Deep73

C'è da impostare l' ID del device sul quale vuoi agire.
Se dai un'occhiata alle strutture te ne accorgi.

Una cosa che non ho capito è come fare ad aprire lo sportello del masterizzatore.

Se ci riesci fammi sapere.

Ciao

:)

l'help ke mi da Delphi su queste API nn è che sia molto esplicativo. Cerco in rete. Ho l'impressione che il master sia identificato in multimedia come q.s'altro rispetto a CDAudio... Altro problema.... chissà come vede la libreria i Virtual Devices (tipo Virtual Clone CD, Daemon Tools e Nero Virtual Drive).

Ciao.

Sergio Neddi
27-11-2002, 22.17.10
Originariamente inviato da Deep73


interessante.... ma se hai + cd? :D Ora spulcio le API (bzzzzzzzzz :cool: )

Invece di CDAudio devi dire CDAudio1.

Nel mio caso ho il CD-ROM visto come R: (Reader) e masterizzatore come W: (Writer), usando come device CDAudio apro il CD-ROM, se uso CDAudio1 apro il masterizzatore.

Penso che quindi si possa continuare con CDAudio2, CDAudio3, ecc...

Il numero non credo che sia legato alla lettera di unità (quella che viene pirma o dopo), ma all'ordine nel quale sono gestiti i driver multimediali.

Sergio Neddi
27-11-2002, 22.30.16
Allego un programmino che ho fatto al volo... se lanciate ApriCD senza parametri apre la prima unità se specificate su linea di comando 1 apre la seconda, ecc...

Ad esempio: ApriCD 1 a me apre il masterizzatore.

Valori non validi non hanno effetto.

TyDany
27-11-2002, 22.39.39
Funziona perfettamente ma non con gli scsi ;)

Sergio Neddi
27-11-2002, 22.46.41
Infatti l'approccio con il sistema multimediale è semplice ma non il massimo, ad ogni modo mi sarà utile (visto che la quasi totalità dei masterizzatori oggi è IDE, perlomeno tutti quelli venduti dalla mia ditta) per aprire il masterizzatore dei clienti: certe volte utilizzando Instant Write capita che al termine non sia possibile aprire il masterizzatore con il tasto, ma si può facendo tasto dx sull'unità e poi espelli (o rimuovi).

Però è una cosa scomoda, soprattutto per le persone che devono farlo e che non sono tecnici, ma impiegati.

Questo sistema dovrebbe funzionare e permettere di aprire il masterizzatore con un semplice click.

Uno di questi giorni provo sul campo.

TyDany
27-11-2002, 22.51.13
Ho provato su più pc e funziona alla perfezione, ripeto, l'unico problema l'ho incontrato con gli scsi.

P.S. Testato su due pc e due portatili ;)

Deep73
28-11-2002, 00.16.26
Originariamente inviato da Sergio Neddi
Allego un programmino che ho fatto al volo... se lanciate ApriCD senza parametri apre la prima unità se specificate su linea di comando 1 apre la seconda, ecc...

Ad esempio: ApriCD 1 a me apre il masterizzatore.

Valori non validi non hanno effetto.

ohibò! mi fa cose strane. Senza parametro mi apre il primo cd (che è un Plexy 40TS scsi), con parametri nn mi apre un bel niente! (cioè un Master Plexy 124TS SCSI e un Asus DVD)
A ke serve quella dll?

Credo cmq. ke ci sia un altro metodo passando per le API che gestiscono direttamente l'hw e nn i multimedia devices.

Ciao.

Sergio Neddi
28-11-2002, 01.23.14
A me ApriCD 1 fa aprire il Masterizzatore.

Se a te non funziona... è possibile, infatti come dicevo sopra, sono d'accordo con te che la cosa andrebbe gestita diversamente.

La DLL? E' il runtime dell'eseguibile (è scritto in Visual DialogScript, per fare velocemente ho usato quello).