Soft qui detecte l'ejection cd

Soft qui detecte l'ejection cd - Delphi/Pascal - Programmation

Marsh Posté le 02-01-2003 à 22:09:25    

Salut.
 
Qui se sent capable de faire un soft qui surveille l'ejection cd, et qui fermerai le logiciel qui utiliserai le cd, lorsque l'on appuie sur Eject.... tout ca pour eviter un plantage du soft.
 
Ca fait pas mal d'année que je ne programme plus ...

Reply

Marsh Posté le 02-01-2003 à 22:09:25   

Reply

Marsh Posté le 03-01-2003 à 08:35:37    

Bin, j'ai ca pour commencer :
 

Code :
  1. function IsCdOpen(Drive:Char):Boolean;
  2. const MAXLENGTH = 255;
  3. var S:Pchar;
  4.     Rep:Cardinal;
  5. begin
  6.      Result := False;
  7.      try
  8.         GetMem(S,MAXLENGTH);
  9.         Rep := MciSendString(PChar('Open CdAudio Alias cd Wait Shareable'), S, MAXLENGTH, Handle);
  10.         if Rep<>0 then begin
  11.            MciGetErrorString(Rep,S,MAXLENGTH);
  12.            Application.MessageBox(S,0,MB_ICONERROR);
  13.            Exit;
  14.         end;
  15.         Rep := MciSendString(PChar('Status cd Mode'), S, MAXLENGTH, Handle);
  16.         if Rep<>0 then begin
  17.            MciGetErrorString(Rep,S,MAXLENGTH);
  18.            Application.MessageBox(S,0,MB_ICONERROR);
  19.            Exit;
  20.         end;
  21.         if S='stopped' then Result := False
  22.         else Result := True;
  23.         Rep := MciSendString(PChar('Close cd'), S, MAXLENGTH, Handle);
  24.         if Rep<>0 then begin
  25.            MciGetErrorString(Rep,S,MAXLENGTH);
  26.            Application.MessageBox(S,0,MB_ICONERROR);
  27.            Exit;
  28.         end;
  29.      Finally
  30.         FreeMem(S,MAXLENGTH);
  31.      end;
  32. end;
  33. function IsMediaPresent:Boolean;
  34. const MAXLENGTH = 255;
  35. var S:Pchar;
  36.     Rep:Cardinal;
  37. begin
  38.      Result := False;
  39.      try
  40.         GetMem(S,MAXLENGTH);
  41.         Rep := MciSendString(PChar('Open CdAudio Alias cd Wait Shareable'), S, MAXLENGTH, Handle);
  42.         if Rep<>0 then begin
  43.            MciGetErrorString(Rep,S,MAXLENGTH);
  44.            Application.MessageBox(S,0,MB_ICONERROR);
  45.            Exit;
  46.         end;
  47.         Rep := MciSendString(PChar('Status cd Media Present'), S, MAXLENGTH, Handle);
  48.         if Rep<>0 then begin
  49.            MciGetErrorString(Rep,S,MAXLENGTH);
  50.            Application.MessageBox(S,0,MB_ICONERROR);
  51.            Exit;
  52.         end;
  53.         if S = 'true' then Result := True
  54.         else Result:= False;
  55.         Rep := MciSendString(PChar('Close cd'), S, MAXLENGTH, Handle);
  56.         if Rep<>0 then begin
  57.            MciGetErrorString(Rep,S,MAXLENGTH);
  58.            Application.MessageBox(S,0,MB_ICONERROR);
  59.            Exit;
  60.         end;
  61.      Finally
  62.         FreeMem(S,MAXLENGTH);
  63.      end;
  64. end;


 
Ca détecte (en théorie, je ne l'ai pas testé) si le lecteur est ouvert. J'en ai un autre qui ouvre et ferme le lecteur, si ca t'interresse.
 

Reply

Marsh Posté le 21-06-2005 à 17:33:26    

Bonjour,
 
Je suis également à la recherche d'un petit programme qui me permettrait d'éjecter les cd-dvd sans passer par le bouton situé sur la façade des lecteurs de disque. Ceux-ci sont devenus difficilement atteignables suite à quelques modifications maison...
 
Merci d'avance!
 
Raphaël

Reply

Marsh Posté le 21-06-2005 à 19:38:26    

poste de travail -> clic droit sur le lecteur -> ejecter :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 21-06-2005 à 20:25:20    

antp a écrit :

poste de travail -> clic droit sur le lecteur -> ejecter :D


 
+1... c'est fait pour.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed