Newsgroup: it.comp.lang.visual-basic
Titolo: Aprire masterizzatore

Salve a tutti!
Scusate se la domanda è stata già posta più volte,
ma qualcuno mi potrebbe gentilmente rispiegare
come si può aprire il cassetto di un'unità che non sia
il lettore CD predefinito?
Per esempio se io ho come lettore CD D:\ e come
masterizzatore E:\, come faccio per aprire il cassetto
del masterizzatore?
Grazie mille a tutti!
--------------------------------------------
             ASSA
http://web.tiscalinet.it/Assatarram
Napster: Assatarram3
it.comp.lang.visual-basic: Assatarram
--------------------------------------------

 --------------------------------------------
Prendi una tenaglia....(HIHIHIHIHIHHIHIHIHIHIHHIHIHIHIHIH, non ce la faccio
piu' a proseguire dal ridere; sob, sto rischiando il soffocamento!)
Ciao
Luca
:-))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
))))))))))))))))))))))))))))))))))))))))))

DeviceIoCtrl()
-- 
Posted from 
smtp.technorail.com
 [195.103.144.19] (may be forged) 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 wrote in message
news:011201c0acdc$167876f0$169e953e@aldebaran...


effettivamente ho la mania di essere telegrafico.
ma adesso mi sento più buono :)
torniamo al nostro sportello del CD
questa è la prima che mi viene in mente, funziona solo ed esclusivamente su
Windows NT 4 e famiglia. Dovete passargli un id di unità valido (ad esempio:
"D:", oppure "Volume{8c4c5e70-0e90-11d5-b3e8-806d6172696f}"). Ditemi se
funziona. Ah, già che c'ero ho aggiunto anche un abbozzo di compatibilità
per Windows 95/98. Bisognerebbe chiedere in it.comp.os.dos o
it.comp.lang.pascal se sanno qual è la funzione per espellere i supporti
rimovibili.
Const VWIN32_DIOC_DOS_IOCTL = 1
Type _DEVIOCTL_REGISTERS
    reg_EBX As Long
    reg_EDX As Long
    reg_ECX As Long
    reg_EAX As Long
    reg_EDI As Long
    reg_ESI As Long
    reg_Flags As Long
End Type
Function OpenTheDoor(ByVal Drive As String) As Boolean
Dim h As Long, res As Boolean, ret As Long
Dim preg As _DEVIOCTL_REGISTERS
    res = 0
    h = CreateFile( _
        "\\.\" + Drive _
        0, _
        FILE_SHARE_READ Or FILE_SHARE_WRITE, _
        ByVal 0&, _
        OPEN_EXISTING, _
        0, _
        ByVal 0& _
    )
    If h <> INVALID_HANDLE_VALUE Then
        res = DeviceIoControl( _
            h, _
            IOCTL_STORAGE_EJECT_MEDIA, _
            ByVal 0&, _
            0, _
            ByVal 0&, _
            0, _
            ret, _
            ByVal 0& _
        )
    Else
        h = CreateFile(
            "\\.\vwin32" _
            0, _
            FILE_SHARE_READ Or FILE_SHARE_WRITE, _
            ByVal 0&, _
            OPEN_EXISTING, _
            0, _
            ByVal 0& _
        )
        If h <> INVALID_HANDLE_VALUE Then
            ' DA FARE:
            '     informarsi sulla funzione, sui parametri e sui
            '     valori di ritorno. Per ora non succederà nulla,
            '     anzi, la funzione così com'è è potenzialmente
            '     pericolosa.
            res = DeviceIoControl( _
                h, _
                VWIN32_DIOC_DOS_IOCTL, _
                preg, _
                LenB(preg), _
                preg, _
                LenB(preg), _
                ret, _
                ByVal 0& _
            )
            res = Not (preg.reg_Flags And &H8000)
        End If
    End If
    CloseHandle(h)
    OpenTheDoor = res
End Function


 il lettore CD predefinito?
Usa l'API mciSendString
Public Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA"
(ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal
uReturnLength As Long, ByVal hwndCallback As Long) As Long
per prima cosa apri un collegamento con l'unità
mciSendString "open E: type cdaudio alias mast", vbNullString, 0, 0
poi puoi aprire e chiudere lo sportello a piacimento
mciSendString "set mast door open", vbNullString, 0, 0
mciSendString "set mast door closed", vbNullString, 0, 0