Accueil > > > EJECTER UN CD EN FONCTION DE LA LETTRE DU LECTEUR
EJECTER UN CD EN FONCTION DE LA LETTRE DU LECTEUR
Information sur la source
Description
Ce code permet d'éjecter le lecteur CD que l'on désire en fonction de la lettre du lecteur. Il permet aussi, sous Windows NT/2000/XP de le charger via programmation. Ce code ravira tous les programmeurs désirant controler plusieurs lecteurs de CD.
Source
- ' Vous devez placer 2 boutons de commande (Command1) et (Command2)
-
- Option Explicit
-
- Private Declare Function GetVersion Lib "kernel32" () As Long
- Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
- Private Declare Function DeviceIoControl Lib "kernel32" (ByVal hDevice As Long, ByVal dwIoControlCode As Long, lpInBuffer As Any, ByVal nInBufferSize As Long, lpOutBuffer As Any, ByVal nOutBufferSize As Long, lpBytesReturned As Long, lpOverlapped As Any) As Long
- Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
- Private Const INVALID_HANDLE_VALUE = -1
- Private Const OPEN_EXISTING = 3
- Private Const FILE_FLAG_DELETE_ON_CLOSE = 67108864
- Private Const GENERIC_READ = &H80000000
- Private Const GENERIC_WRITE = &H40000000
- Private Const IOCTL_STORAGE_EJECT_MEDIA = 2967560 'Pour éjecter le lecteur
- Private Const IOCTL_STORAGE_LOAD_MEDIA = 2967564 'Pour charger le lecteur
- Private Const VWIN32_DIOC_DOS_IOCTL = 1
-
- Private Type DIOC_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
-
- Private Enum Eject
- EJECT_MEDIA = 2967560
- LOAD_MEDIA = 2967564
- End Enum
-
- Private Sub Command1_Click()
- Operation EJECT_MEDIA
- End Sub
-
- Private Sub Command2_Click()
- Operation LOAD_MEDIA
- End Sub
-
- Private Sub Form_Load()
- Command1.Caption = "Ejecter"
- Command2.Caption = "Charger"
- End Sub
-
- Private Sub Operation(Action As Eject)
- Dim hDrive As Long, DummyReturnedBytes As Long
- Dim Ejecter As String, DriveLetterAndColon As String
- Dim RawStuff As DIOC_REGISTERS
- Ejecter = InputBox("Quel lecteur dois-je éjecter ?", "Ejecter un lecteur")
- If Len(Ejecter) Then 'Vérrifie que l'utilisateur n'ai pas appuyé sur Cancel
- DriveLetterAndColon = UCase(Left$(Ejecter & ":", 2)) 'Met en majuscule pour une interprétation facile
- If GetVersion >= 0 Then 'Tourne sous NT/2000/XP
- hDrive = CreateFile("\\.\" & DriveLetterAndColon, GENERIC_READ Or GENERIC_WRITE, 0, ByVal 0, OPEN_EXISTING, 0, 0)
- If hDrive <> INVALID_HANDLE_VALUE Then
- 'Ejection du lecteur
- Call DeviceIoControl(hDrive, Action, 0, 0, 0, 0, DummyReturnedBytes, ByVal 0)
- Call CloseHandle(hDrive)
- End If
- Else 'Tourne sous Win9x/Me
- hDrive = CreateFile("\\.\VWIN32", 0, 0, ByVal 0, 0, FILE_FLAG_DELETE_ON_CLOSE, 0)
- If hDrive <> INVALID_HANDLE_VALUE Then
- RawStuff.reg_EAX = &H440D 'La fonction à utiliser
- RawStuff.reg_EBX = Asc(DriveLetterAndColon) - Asc("A") + 1 'Le lecteur à utiliser
- RawStuff.reg_ECX = &H49 Or &H800
- 'Ejection du lecteur
- Call DeviceIoControl(hDrive, VWIN32_DIOC_DOS_IOCTL, RawStuff, LenB(RawStuff), RawStuff, LenB(RawStuff), DummyReturnedBytes, ByVal 0)
- Call CloseHandle(hDrive) 'Nettoyer après l'éjection
- End If
- End If
- End If
- End Sub
-
' Vous devez placer 2 boutons de commande (Command1) et (Command2)
Option Explicit
Private Declare Function GetVersion Lib "kernel32" () As Long
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function DeviceIoControl Lib "kernel32" (ByVal hDevice As Long, ByVal dwIoControlCode As Long, lpInBuffer As Any, ByVal nInBufferSize As Long, lpOutBuffer As Any, ByVal nOutBufferSize As Long, lpBytesReturned As Long, lpOverlapped As Any) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Const INVALID_HANDLE_VALUE = -1
Private Const OPEN_EXISTING = 3
Private Const FILE_FLAG_DELETE_ON_CLOSE = 67108864
Private Const GENERIC_READ = &H80000000
Private Const GENERIC_WRITE = &H40000000
Private Const IOCTL_STORAGE_EJECT_MEDIA = 2967560 'Pour éjecter le lecteur
Private Const IOCTL_STORAGE_LOAD_MEDIA = 2967564 'Pour charger le lecteur
Private Const VWIN32_DIOC_DOS_IOCTL = 1
Private Type DIOC_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
Private Enum Eject
EJECT_MEDIA = 2967560
LOAD_MEDIA = 2967564
End Enum
Private Sub Command1_Click()
Operation EJECT_MEDIA
End Sub
Private Sub Command2_Click()
Operation LOAD_MEDIA
End Sub
Private Sub Form_Load()
Command1.Caption = "Ejecter"
Command2.Caption = "Charger"
End Sub
Private Sub Operation(Action As Eject)
Dim hDrive As Long, DummyReturnedBytes As Long
Dim Ejecter As String, DriveLetterAndColon As String
Dim RawStuff As DIOC_REGISTERS
Ejecter = InputBox("Quel lecteur dois-je éjecter ?", "Ejecter un lecteur")
If Len(Ejecter) Then 'Vérrifie que l'utilisateur n'ai pas appuyé sur Cancel
DriveLetterAndColon = UCase(Left$(Ejecter & ":", 2)) 'Met en majuscule pour une interprétation facile
If GetVersion >= 0 Then 'Tourne sous NT/2000/XP
hDrive = CreateFile("\\.\" & DriveLetterAndColon, GENERIC_READ Or GENERIC_WRITE, 0, ByVal 0, OPEN_EXISTING, 0, 0)
If hDrive <> INVALID_HANDLE_VALUE Then
'Ejection du lecteur
Call DeviceIoControl(hDrive, Action, 0, 0, 0, 0, DummyReturnedBytes, ByVal 0)
Call CloseHandle(hDrive)
End If
Else 'Tourne sous Win9x/Me
hDrive = CreateFile("\\.\VWIN32", 0, 0, ByVal 0, 0, FILE_FLAG_DELETE_ON_CLOSE, 0)
If hDrive <> INVALID_HANDLE_VALUE Then
RawStuff.reg_EAX = &H440D 'La fonction à utiliser
RawStuff.reg_EBX = Asc(DriveLetterAndColon) - Asc("A") + 1 'Le lecteur à utiliser
RawStuff.reg_ECX = &H49 Or &H800
'Ejection du lecteur
Call DeviceIoControl(hDrive, VWIN32_DIOC_DOS_IOCTL, RawStuff, LenB(RawStuff), RawStuff, LenB(RawStuff), DummyReturnedBytes, ByVal 0)
Call CloseHandle(hDrive) 'Nettoyer après l'éjection
End If
End If
End If
End Sub
Conclusion
Vous pouvez ejecter / charger un CDROM sous Windows NT/2000/XP, mais je ne sais pas le faire sous Win 9x/ME. Si quelqu'un possède le code, je lui serais gré de me le communiquer. Merci.
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
éjecter les lecteur des que je rentre un cd ou un dvd [ par cool59 ]
bonjour a tous j'ai une question j'ai des cd et je voudrai savoir comment faire pour que le cd a l'insertion ressort automatiquement merci a vous tous
éjecter un lecteur cd à partir d'un programme [ par mat85fcna ]
J'aimerai bien avoir la ligne de code permettant d'ejecter un lecteur cd, svp c pour l'école
Ouvrir un lecteur cd sous VB.net [ par poulain ]
Sous VB.net,quelle est le code qui permet d'ouvrir le lecteur CD? Et, si on en a plusieur, d'en ouvrir qu'un, sans préciser la lettre du lecteur?
Ouvrir un lecteur CD sous VB.net [ par poulain ]
Salut! J'me suis amusé a faire un p'tit prog tout simple, j'suis dasn mes tout debuts, mais je ne connais pas le code pour faire ouvrir le lecteu
au secours DOS [ par joflo ]
bonjour a tousj'essaie de faire un CD bootableMAIS je veux que l'autoexec.bat reconnaisse la lettre du lecteur de cd en cherchant successivement un fi
connaitre la lettre du lecteur CD ROM [ par youkizouki ]
savoir si un CD est dans le lecteur CDROM ? [ par youkizouki ]
lecteur CD [ par mourad183 ]
comment faire pour savoit la lettre d'un lecteur CD??? (E, F,...)
Lecteur de cd rom et DVD [ par TomIlliev ]
Bonjour à tous!Voilà, je voudrai savoir s'il existe une API qui permette de calculer la place disponnible sur un CD ou DVD et qui permettre de dire si
prob winsock [ par zeboss ]
bonjour, je suis en train de développer 2 appli qui marchent avec Winsock. Dans l'appli 1 (par exemple), je dis à l'appli 2 d'ouvrir son lec
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|