Newsgroup: it.comp.lang.visual-basic
Titolo: stato cassetto CD

Riposto il messaggio inevaso sperando che qualcuno di questo dotto consesso 
mi illumini.
Per aprire e chiudere i cassetti dei CD ho usato le seguenti istruzioni:
Private Sub Command2_Click(index As Integer)
 If index = 0 Then
    mciSendString "open Y: type cdaudio alias slave", vbNullString, 0, 0
    mciSendString "set slave door open", vbNullString, 0, 0
 Else
    mciSendString "open Y: type cdaudio alias slave", vbNullString, 0, 0
    mciSendString "set slave door closed", vbNullString, 0, 0
 End If
End Sub
Fin qui tutto bene con ambedue i cd y e z.
ma uso  un tasto per aprire ed uno per chiudere, vorrei farlo con un tasto
solo, per cui dovrei sapere se il cassetto è aperto o chiuso.
Ho cercato fra le api nonchè sul sito un'istruzione che mi torni lo status 
del cassetto se aperto o chiuso, ma non sono stato capace di trovarla.
C'è qualcuno tanto gentile che mi suggerisca l'istruzione per conoscere lo
stato del cassetto?
molte grazie a chi mi aiuta ed a buon rendere.
Peppe
peppe26 chiocciola tele2 punto it

 tasto solo, per cui dovrei sapere se il cassetto è aperto o chiuso.
[Pezza mode on]
Allora, fregatene dello stato ^_^
Scrivi su un bottone "APRI" , quando lo clicchi valuti la caption o il tag e 
aggiorni lo stato :
Private Sub Command2_Click()
 If command2.caption = "Apri" Then
    mciSendString "open Y: type cdaudio alias slave", vbNullString, 0, 0
    mciSendString "set slave door open", vbNullString, 0, 0
    command2.caption = "Chiudi"
Else
    mciSendString "open Y: type cdaudio alias slave", vbNullString, 0, 0
    mciSendString "set slave door closed", vbNullString, 0, 0
    command2.caption = "Apri"
 End If
Al massimo clikkerai il bottone 2 volte solo la prima volta per "allineare" 
la caption allo stato del cassettino.
-- 
[Gigio2k il mago delle pezze pazze via piazza di san patrizio zona pozzo]
http://www.g2kweb.it
[ it-alt.comp.hardware.modding ] - 
http://www.g2kweb.it/ichm
 

 stato del cassetto?
Non ne sono certo, ma credo proprio che ci siano dei comandi dell'MCI stesso
per conoscere lo stato del cassetto. Prova a vedere la documentazione
relativa... In particolare ti suggerisco il sito
http://www.geocities.com/smigman.geo/mci/mci.html
.
Antonio Mirarchi

 relativa... 
vero...
la frase magica e` "status media present"
qui c'e` un esempio in vb:
mplementing an Audio CD Player
http://www.ilook.fsnet.co.uk/vb/vbcdplyr.htm
-- 
ciao, hal

Ringrazio tantissimo tutti quelli che mi hanno aiutato, ma purtroppo nulla 
che mi torni lo stato del cassetto.
Le istruzioni sono tutte per aprire e chuudere il cassetto.
Se leggo il messaggio di ritorno mi da sempre il messaggio di manovra 
eseguita correttamente.
la frase magica  "status media present" vale solo se il cd è presente ma non 
se il cassetto è vuoto.
Il mio scopo era di creare un programmino da associare a due tastini della 
tastiera multimediale per aprire e chiudere i cassetti del DVD e del 
masterizzatore senza fare contorsioni per accedervi.
Quindi il programma doveva fare:
1 Vedere se il cassetto era aperto o chiuso
2 in conseguenza dello stato doveva inviare il comando di chiusura ed 
apertura e sparire.
Ma per quante ricerche anche remote ed anche in USA abbia fatto non sono 
riuscito a trovare nulla sull'argomento.
Ringrazio il 'mago delle pezze' per la sua astuzia ma nel mio caso non è 
applicabile.
E farò anche io una inelegante pezza, associo un file ini al programma nel 
quale ci sta la flag di aperto o chiuso.
Ogni volta che il programma parte apre o chiude a seconda della flag ed 
inverte la flag nel file.
Al massimo il tasto va premuto 2 volte.
Che ve ne pare? orribile vero?
Grazie ancora a tutti.


 che mi torni lo stato del cassetto.
uhm... ma hai letto *tutto* il codice al link che ho pubblicato?
-- 
ciao, hal

 ha scritto nel messaggio 
news:3z5je.5751$Jd....@tornado.fastwebnet.it...

tutto tuttissimo, approfondito, fatto prove, varianti, debug, letti messaggi 
di ritorno, insomma l'ho rivoltato e scuoiato alla ricerca di un artificio 
ma ora con i prog a bilancino che ho fatto i tastini della mia keyboard 
funzionano a meraviglia, male che vanno le cose, premo 2 volte.
Tanto il prog non è per altri, solo per me personale.
Ciao e grazie 

 uhm... ma hai letto *tutto* il codice al link che ho pubblicato?
e hai letto bene *tutta* la mia pezza ? non ti serve l'ini, ti basta una 
var, il programma parte con la caption "Apri" e il relativo comando di 
apertura, se e' gia' aperto allora lo premi 2 volte, stop, 3-4 righe e STOP, 
ne ini ne inutili rilevamenti sull'mci !
Perche' sbattersi tanto per un "eleganza" che il contesto non richiede ?
Cioe' tu per fare 5km, prendi l'autostrada e paghi 1 euro o ti fai la 
superstrada ? Io piglio la superstrada.
Analisi al volo,
1) il programma parte all'avvio
2) all'avvio al 99% dei casi il cassetto e' chiuso, quindi usando il tasto 
al 99% al primo click manderai il comando giusto, se va male basta 
ricliccarlo !!!
3) se apri il cd dal suo tasto e quindi "sputtani" lo stato, allora il 
programma non ti serve e cmq al posto di 1 ti bastano 2 click per 
riallinearti
4) La strada + semplice a volte e' quella giusta.
^_^
-- 
[Gigio2k]


 4) La strada + semplice a volte e' quella giusta.
Dipende dal livello di qualita` che si deve fornire.
Nel caso di Peppe, visto che alla fine il programma e` a suo uso
personale va bene la tua soluzione.
Anch'io per il mio solo uso e consumo vado giu` spiccio, anzi
nella maggior parte dei casi faccio degli script, nemmeno dei
programmi.
-- 
ciao, hal

 programmi.
Idem


 Idem
Infatti l'ho fatto e va benissimo, riguardo l'ini mi serve perchè avendo 
associato il prog a 2 tastini lo faccio parire e lo ammazzo subito senza che 
compaia alcunche e non mi va di tenere un programma attivo in background.
Ma a proposito degli script, ne ho sentito parlare ma scusate la crassa 
ignoranza non so cosa sono e come si fanno, io uso VB6, li prevede? come si 
fanno? qulcuno gentilmente mi da un link per prelevare un semplice script 
per vedere come è fatto?
Grazie 

 per vedere come è fatto?
Mi riferisco al windows scripting host, utilizzabile tramite
vbscript, javascript e credo anche altro.
Lo trovo fantastico per amministrare la macchina e poi e` compreso
nel sistema operativo e non serve alcuna licenza :-)
Se leggi le risposte di Fosco, ne trovi degli esempi, alcuni
di questi anche notevoli.
-- 
ciao, hal

 per vedere come è fatto?
Vai subito a quello dove BUONO che ci sono i samples (esempi)
Questo sotto e' l'help del WSH con numerosi esempi ( sopra il mega)
http://www.microsoft.com/downloads/details.aspx?FamilyId=01592C48-207D-4BE1-8A76-1C4099D7BBB9&displaylang=en
http://download.microsoft.com/download/winscript56/Install/5.6/W982KMeXP/EN-US/scrdoc56en.exe
(tuttosuunarigasenononfungecopiaincollaunpezzopervolta)
Download and install WSH 5.6 from here:
http://msdn.microsoft.com/downloads/list/webdev.asp
Scripts Ufficiale
http://www.microsoft.com/italy/scripting/
http://msdn.microsoft.com/scripting/
http://www.w3schools.com/
Basics
http://www.jsware.net/jsware/scripts.html
   ( BUONO con samples completi )
http://www.microsoft.com/technet/scriptcenter/learnit.mspx
InIzio wsh ( samples)
http://www.robvanderwoude.com/robnav.html
Windows VBScript Utilities » 
www.billsway.com/vbspage/
Windows Tweaks & Tips » 
www.billsway.com/notes_public/
T Lavedas' WSH Scripts
 
http://www.pressroom.com/~tglbatch/wshindex.html
CLR SCRIPT
http://www.clrsoftware.com/clrscript/
AutoItX
http://www.hiddensoft.com/AutoIt/
AutoItX solo dll
http://www.hiddensoft.com/cgi-bin/countdown.pl?AutoIt/AutoItX.zip
negli esempi cambia "Untitled - Notepad" in "Senza nome - Blocco note"
e "Calculator" in "Calcolatrice"
Perfect Keyboard Pro
http://www.pitrinec.com/
--
Fosco

 di questi anche notevoli.
Graxie ma sono un dilettante e mago del copia incolla
se vuoi vedere veramente qualcosa di eccezionale
(anche se purtoppo in negativo) cercati il "vecchio"
ILoveYou.vbs  e vedi cosa e' stato in grado di fare
quel disgraziato ...
--
Fosco

 ILoveYou.vbs  e vedi cosa e' stato in grado di fare  quel disgraziato ...
ah  eccolo qua :
http://www.compapp.dcu.ie/~cdaly/courses/ca616/labs/virus/virii.zip
Many modern viruses on windows are visual basic scripts.
Here we will examine the code in these viruses.
http://www.compapp.dcu.ie/~cdaly/courses/ca616/labs/virus/
Trascinare  il  iloveyou.txt  qui sopra (sotto.vbs) per renderlo piu' leggibile
ovviamente s'intende il TUTTO come studio e chi ne dovesse
far un uso malevolo oltre che ad essere un co*lione mal ne incolga
"a se stesso se medesimo" e discendenti fino alla settima generazione
option explicit
Dim fSource, fDest,x,fTemp,Flag
fDest=""
If Wscript.Arguments.Count<>1 Then
 WScript.Echo "You must supply a txt file (drag and drop it!)"
Else
 fSource=WScript.Arguments(0)
 If ucase(right(fSource,4))<>".TXT" Then
WScript.Echo "A TXT file please" & vbCrLF & fSource
 Else
  x=InstrRev(fSource,"\")
  fDest=Left(fSource,x) & "!" & Mid(fSource,x+1)
 End If
End If
If fDest="" Then WScript.Quit
fTemp=fSource & ".TMP"
Dim fso,fs,fd,Chaine,ScrAll,Consts(),NbConsts,strTemp
NbConsts=-1
ScrAll="" 'All the code without constant declarations
Set fso=CreateObject("Scripting.FileSystemObject")
Set fs=fso.OpenTextFile(fSource,1)
Set fd=fso.OpenTextFile(fTemp,2,True)
While Not fs.AtEndOfStream
 Chaine=fs.ReadLine
 Chaine=DelLeftSpace(Chaine)
 If Left(Chaine,1)="'" Then Chaine=""
 'Supress comments at the end of the line
 x=InstrRev(Chaine,"'")
 If x>0 Then
  If x>InstrRev(Chaine,"""") Then
   Chaine=Trim(Left(Chaine,x-1))
  End If
 End If
 Chaine=DelRightSpace(Chaine)
 If Chaine<>"" Then
  'Schrink the first space
  x=Instr(Chaine," ")
  Flag=Instr(Chaine,chr(9))
  If (Flag<x) And (Flag>0) Then x=Flag
  If x>0 Then
   Flag=Instr(Chaine,"""")
   If (x<Flag) Or (Flag=0) Then
Chaine=DelRightSpace(Left(Chaine,x)) _
 & " " & DelLeftSpace(Mid(Chaine,x))
   End If
  End If
  fd.WriteLine Chaine
  'Remember all constant declarations
  If UCase(Left(Chaine,"6"))="CONST " Then
   strTemp=LTrim(Mid(Chaine,7))
   x=Instr(strTemp,"=")
   If x>0 Then
    strTemp=RTrim(Left(strTemp,x-1))
    NbConsts=NbConsts+1
    Redim Preserve Consts(NbConsts)
    Consts(NbConsts)=UCase(strTemp)
   End If
  Else
   ScrAll=ScrAll & Chaine & vbCrLf
  End If
 End If
Wend
fd.Close
fs.close
Set fs=Nothing
Set fd=Nothing
'Constant analysis
'Forget all unused constants
ScrAll=UCase(ScrAll)
For x=NbConsts To 0 Step -1
 If Instr(ScrAll,Consts(x))=0 Then
  Consts(x)=Consts(NbConsts)
  NbConsts=NbConsts-1
 End If
Next
'Consts() has only used constants
Set fs=fso.OpenTextFile(fTemp,1)
Set fd=fso.OpenTextFile(fDest,2,True)
While Not fs.AtEndOfStream
 Chaine=fs.ReadLine
 If Ucase(Left(Chaine,6))="CONST " Then
  'Delete All Unused declarations
  Flag=False
  For x=0 to NbConsts
   If Instr(Ucase(Chaine),Consts(x))>0 Then Flag=True
  Next
  If Not Flag Then Chaine=""
 End If
 If Chaine<>"" Then fd.WriteLine Chaine
Wend
fd.Close
fs.close
Set fs=Nothing
Set fd=Nothing
fso.DeleteFile(fTemp)
msgbox "OK"
Set fso=Nothing
Function DelRightSpace(ByVal Chaine)
 'Delete space at the end of the line
 Chaine=Trim(Chaine)
 Do While Chaine<>""
  If Right(Chaine,1)=chr(9) Then
   Chaine=RTrim(Left(Chaine,Len(Chaine)-1))
  Else
   Exit Do
  End If
 Loop
 DelRightSpace=Chaine
End Function
Function DelLeftSpace(ByVal Chaine)
 'Delete Space at the beginning of the line
 Chaine=Trim(Chaine)
 Do While Chaine<>""
  If Left(Chaine,1)=chr(9) Then
   Chaine=LTrim(Mid(Chaine,2))
  Else
   Exit Do
  End If
 Loop
 DelLEftSpace=Chaine
End Function
--
Fosco

 quel disgraziato ...
ne ho un po' di esempietti del genere, molti di questi
catturati e debuggati on the field direttamente sui pc
delle vittime :-)
-- 
ciao, hal

 che non tralascio nessuno dei tuoi post ;-)
Beh a questo punto che dire .... GRAZIE della fiducia
--
Fosco

Molte grazie a tutti, siete stati disponibili e gentili oltre il dovuto da 
una semplice cortesia.
Ora mi studierò gli script dei quali ne ho sempre sentito parlare, io 
conosco solo gli script jawa per le pagine web.
Grazie ancora
peppe26 chiocciola tele2 punto it
www.naglieri.com