Ejecter clé usb ou cd

Contenu du snippet

Ces fonctions permettent simplement d’éjecter vos CD ou clés USB en douceur. Il faut cependant qu'ils ne soient pas utilisés par une application.

Source / Exemple :


Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Integer, ByVal dwShareMode As Integer, ByVal lpSecurityAttributes As IntPtr, ByVal dwCreationDisposition As Integer, ByVal dwFlagsAndAttributes As Integer, ByVal hTemplateFile As IntPtr) As IntPtr
  Private Declare Function DeviceIoControl Lib "kernel32" (ByVal hDevice As IntPtr, ByVal dwIoControlCode As Integer, ByVal lpInBuffer As IntPtr, ByVal nInBufferSize As Integer, ByVal lpOutBuffer As IntPtr, ByVal nOutBufferSize As Integer, ByRef lpBytesReturned As Integer, ByVal lpOverlapped As IntPtr) As Integer
  Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As IntPtr) As Integer
  Private Const INVALID_HANDLE_VALUE As Integer = -1
  Private Const OPEN_EXISTING As Integer = 3
  Private Const GENERIC_READ As Integer = &H80000000
  Private Const GENERIC_WRITE As Integer = &H40000000
  Private Const IOCTL_STORAGE_EJECT_MEDIA As Integer = 2967560

  Private Sub EjectCDRom(ByVal driveletter As String)
    Dim path As String = "\\.\" + driveletter
    If Not path.EndsWith(":") Then path = path + ":"
    Dim hDrive As IntPtr = CreateFile(path, GENERIC_READ Or GENERIC_WRITE, 0, IntPtr.Zero, OPEN_EXISTING, 0, IntPtr.Zero)
    If CInt(hDrive) = INVALID_HANDLE_VALUE Then Throw New IO.IOException("Could not open drive " + driveletter)
    Dim dummy As Integer
    DeviceIoControl(hDrive, IOCTL_STORAGE_EJECT_MEDIA, IntPtr.Zero, 0, IntPtr.Zero, 0, dummy, IntPtr.Zero)
    CloseHandle(hDrive)
  End Sub

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    EjectCDRom("d")
  End Sub
End Class

Conclusion :


Enfin un source compatible avec Windows 7 !

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.