Ejection cd

Signaler
Messages postés
268
Date d'inscription
vendredi 30 avril 2004
Statut
Membre
Dernière intervention
13 mai 2013
-
Messages postés
268
Date d'inscription
vendredi 30 avril 2004
Statut
Membre
Dernière intervention
13 mai 2013
-
Bonjour a tous,
Quelle fonction permet e détecté l'ejection d'un cd (et de renvoyé lequel es ce)?
Merci pour votre aide.

8 réponses

Messages postés
688
Date d'inscription
mercredi 6 avril 2005
Statut
Membre
Dernière intervention
2 juin 2006
1
précise un peu :

Quelle librairie????
parce qu'en assembleur ca risque d'etre la misere lol;

@+;
ROOT_DIEU.
Messages postés
398
Date d'inscription
jeudi 30 octobre 2003
Statut
Membre
Dernière intervention
15 juin 2007
2
salut

tu peux utiliser les IOCTL





#include <windows.h>







// Envoie un IOCTL simple vers le périphérique donné



bool SendSimpleIOCTL( LPCTSTR DeviceName, DWORD IoControlCode )



{



// ouvrir le driver associé au périphérique donné



HANDLE hDevice = ::CreateFile(



DeviceName,



GENERIC_READ,



0,



0,



OPEN_EXISTING,



FILE_ATTRIBUTE_NORMAL,



0 );



if ( hDevice == INVALID_HANDLE_VALUE )



{



return false;



}







// envoyer l'IOCTL



DWORD unused;



BOOL res = ::DeviceIoControl(



hDevice,



IoControlCode,



NULL,



0,



NULL,



0,



&unused,



NULL );







// libérer les ressource



::CloseHandle( hDevice );







return res == TRUE;



}







// ouvre le tiroir d'un CD-ROM, ou autre...



bool EjectDevice( LPCTSTR DeviceName )



{



return SendSimpleIOCTL(



DeviceName,



IOCTL_STORAGE_EJECT_MEDIA );



}







// ferme le tiroir d'un CD-ROM, ou autre...



bool CloseDeviceDoor( LPCTSTR DeviceName )



{



return SendSimpleIOCTL(



DeviceName,



IOCTL_STORAGE_LOAD_MEDIA );



}







int main()



{



// le disque peut être désigné soit via son nom logique (par exemple "D:")



// soit par son nom de périphérique ("CdRom0")



// Dans les deux cas, ils doivent être précédés de "\\.", ce qui donne



// "\\.\D:" et "\\.\CdRom0". Mais en C/C++ il faut doubler les antislash,



// soit au final "\\\\.\\D:" et "\\\\.\\CdRom0";



EjectDevice( "\\\\.\\D:" );



CloseDeviceDoor( "\\\\.\\CdRom0" );



}
Messages postés
933
Date d'inscription
dimanche 1 avril 2001
Statut
Modérateur
Dernière intervention
9 janvier 2012
2
dans mes sources, celle concernant la gravure, expose un exemple d'ejection de cd.

@+
Arnotic,
Admin CS,
Développeur chez Néos SDI,
MVP Visual C++
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
mciSendString("Set cdaudio door open wait", 0, 0, 0);



http://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_mcisendstring.asp
if(!Meilleur("Joky")) return ERREUR;
Messages postés
268
Date d'inscription
vendredi 30 avril 2004
Statut
Membre
Dernière intervention
13 mai 2013
2
Merci de vos réponses (elles me seront utiles par la suite),mais en fait c comment voir quand la porte du lecteur s'ouvre que je voulais,j'ai pensé utilisé les messages de windows (WM_DEVICECHANGE) le problème étant que quelque soit le "device" (clef usb ect...) windows envoi ce message et j'ai as trouvé comment reconnaitre qui est le "device"
Merci
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_mm_mcinotify.asp


Regarde un peu les messages, j'suis pas sur :)
if(!Meilleur("Joky")) return ERREUR;
Messages postés
268
Date d'inscription
vendredi 30 avril 2004
Statut
Membre
Dernière intervention
13 mai 2013
2
Ma foi je suis allé voir,mais je n'ai rien trouvé de vraiment intérressant,le seul message qui pourrait peut etre m'etre utile c'est "MCIWNDM_GETMOD" mais je suis même pas sur,de plus j'ai un problème avec l'inclusion du .h (voir le sujet "Des erreurs dans les fichier d'en tete???")
Donc voili pour l'instan c o point mort.
Messages postés
268
Date d'inscription
vendredi 30 avril 2004
Statut
Membre
Dernière intervention
13 mai 2013
2
Ma foi je suis allé voir,mais je n'ai rien trouvé de vraiment intérressant,le seul message qui pourrait peut etre m'etre utile c'est "MCIWNDM_GETMOD" mais je suis même pas sur,de plus j'ai un problème avec l'inclusion du .h (voir le sujet "Des erreurs dans les fichier d'en tete???")
Donc voili pour l'instan c o point mort.