Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : savoir si un cd est present dans le lecteur [ Système / Périphérique ] (neil)

mercredi 4 avril 2007 à 09:54:48 | savoir si un cd est present dans le lecteur

neil

Bonjour, je voudrais savoir s'il existe un message envoyé par windows lorsqu'on insert un cd dans un lecteur de cd rom?
Autrement comment faire pour savoir si l'utilisateur a inséré un cd dans le lecteur sans faire utiliser un timer (avec la commande  findfirst )?
merci


mercredi 4 avril 2007 à 17:37:10 | Re : savoir si un cd est present dans le lecteur

japee

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
Salut,

Tu obtiens la valeur du message d'insertion de CD en utilisant la fonction :

ValeurMessage := RegisterWindowMessage('QueryCancelAutoPlay');

Tu n'as plus qu'a intercepter le message.

L'inconvénient à mon avis, c'est que :
- il faut que ton appli ait le focus au moment de l'insertion du CD,
- il me semble que ça ne fonctionne qu'avec les CD démarrant avec un autorun...

A tester, donc.

Bonne prog'

mercredi 4 avril 2007 à 22:34:12 | Re : savoir si un cd est present dans le lecteur

jelume

en utilisant la fonction DiskSize fournit dans Delphi

jeudi 5 avril 2007 à 11:45:10 | Re : savoir si un cd est present dans le lecteur

neil

Bonjour, desolé de ne repondre que maintenant mais je n'avais plus de connexion internet lol
J'ai oublié de préciser que le code servait à faire une copie automatique d'un cd  lors de son insertion, donc en fait j'ai un timer qui regarde si un fichier (ici seulement un fichier vidéo) est prèsent dans le lecteur cd, si oui il le copie.
Donc mon problème c'est que je dois utiliser un timer en tout temps, méthode que je ne trouve pas trop élégante.
D'où ma question de savoir s'il existe un message envoyé par windows lors de l'insertion d'un cd

Japee> pour ce qui est de ton idée je vais voir si j'arrive à utiliser ta méthode mais si comme tu le dis cela ne fonctionne qu'avec un autorun, cela ne convient pas à mon programme.

Jelume> j'ai deja tester disksize mais là aussi il faut un timer donc cela en revient au meme que findfirst;

Merci


jeudi 5 avril 2007 à 14:09:04 | Re : savoir si un cd est present dans le lecteur

jelume

tu trouveras ton bonheur ici:
http://www.torry.net/pages.php?id=249


jeudi 5 avril 2007 à 15:00:05 | Re : savoir si un cd est present dans le lecteur

japee

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
Oui, sinon, suite à ta question, j'ai cherché un peu.

Comme je n'ai pas le temps de faire avancer plus le code, je te soumets ce que j'ai déjà trouvé :

interface

  Memo: TMemo;
  procedure WndProc(var M: TMessage); override;

var
  wm_QueryCancelAutoPlay: UINT ;

implementation

procedure TForm1.WndProc(var M: TMessage);
begin
  if M.Msg = WM_DEVICECHANGE then
  begin
    Memo.Lines.Add(DateTimeToStr(Now) + 'M.Msg = WM_DEVICECHANGE');
    case M.WParam of
      $8000:
      begin
        Application.BringToFront;
        Memo.Lines.Add('Fermeture du tiroir');
      end;
      $8004: Memo.Lines.Add('Ouverture du tiroir');
    end;
    Memo.Lines.Add(Format('M.WParam = %d', [M.WParam]));
  end else
  { si l'appli n'a pas le focus, on ne recevra pas le message suivant }
  if M.Msg = wm_QueryCancelAutoPlay then
  begin
    Memo.Lines.Add(DateTimeToStr(Now) + 'M.Msg = wm_QueryCancelAutoPlay');
    M.Result := 1; // <- stop AutoPlay
  end
  else
    inherited WndProc(M);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  wm_QueryCancelAutoPlay := RegisterWindowMessage('QueryCancelAutoPlay');
end;


Comme tu peux le constater, j'ai réussi à intercepter les messages d'ouverture et de fermeture du tiroir. Reste à gérer tout ça. Si ça peut t'ouvrir une piste...

Bonne prog'

jeudi 5 avril 2007 à 16:10:17 | Re : savoir si un cd est present dans le lecteur

neil

Lapee> Ola j'en attendais pas autant merci, je vais etudier tout ca merci beaucoup

Jelume> je suis allez sur le site et effectivement  les composants présent ont l'air intéressent mais le probleme est que 1 je possède delphi 7 personnel (or les composant s'arret a delphi 5)et que malheureusement je n'ai pas le temps de les adapter à D7 et 2 je cherche pour le moment une méthode sans composants suplémentaires mais merci d'avoir chercher


jeudi 5 avril 2007 à 16:58:22 | Re : savoir si un cd est present dans le lecteur

neil

Japee (desolé pour la faute de frappe)> merci c'est apparament ce que je cherchais , je n'ai plus qu'à adapter mon code, encore merci. Par contre, je ne comprend pas l'utilité de cette ligne de code, peux tu m'aider ? application.bringtofront : d'après l'aide en ligne, cela permet de faire de la dernière fenetre active la fenetre au premier plan, mais je ne vois pas pourquoi tu l'utilises à ce niveau du code (d'ailleurs si je supprime cette ligne, je ne vois pas de diffèrence). Merci

jeudi 5 avril 2007 à 17:30:15 | Re : savoir si un cd est present dans le lecteur

neil

Japee, apparament ton code fonctionne (trop) bien , en effet, si j'insère un peripherique, comme une clès USB, l'evenement 'fermeture du tiroir' se déclenche. Y a t'il un moyen de ne gèrer l'evenement pour un leteur donné ? Merci

jeudi 5 avril 2007 à 20:25:55 | Re : savoir si un cd est present dans le lecteur

neil

Bon j'ai cherché un peu plus et j'ai donc trouvé comment faire, merci encore pour votre aide.


1 2

Cette discussion est classé dans : cd, lecteur, present


Répondre à ce message

Sujets en rapport avec ce message

Ouverture et fermeture d'un lecteur CD [ par Filipe35 ] bonjour à tous,ma question est la suivante,y a t-il à moyen de gérer l'open et le close d'un (ou de plusieurs)lecteur(s) CD. Plus précisément: Détecti détection ouverture lecteur CD [ par khemi ] Bonjourj'ai un gros probleme, j'aimerais détecter lorsque l'utilisateur appui sur le bouton d'éjection d'un lecteur CD.J'ai pensé faire avec les Hooks message windows et lecteur cd [ par neil ] bonjours,je voudrai savoir comment faire pour supprimer le message de windows lorsqu'on essaye d'acceder au lecteur de cd alors qu'il n'y a pas de cd. VTOC virtuelle [ par KIMI1632 ] Kimi1632salut, je voudrait simuler la présence d' CD/DVD dans mon lecteur qui bloque s'il est vide,  voilà a quoi je pense 1- faire une routine qui éc connaître la/les lettres des lecteurs [ par JackTheRipp3r ] Salut à tous, j'aimerais savoir comment faire pour connaître la lettre des lecteurs cd-rom/dvd/graveur de l'ordinateur sur lequel est exécuté l'appli. Lecteur CD [ par Daniel du Plessis Robinson ] Bonjour,pour un débutantComment peut-on par programme trouver le chemin du lecteur CD (par ex E:\)en VB ou VBAmerci pour votre aide [Delphi] Erreur Pas de disque dans le lecteur [ par Tavounet ] Bonjour, J'ai un petit problème en programmation d'un logiciel en Delphi, je réalise le programme de façon à le lancer à partir d'un CD, j'ai donc cré


Nos sponsors

Sondage...

CalendriCode

Novembre 2008
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,187 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.