2012-07-10 13 views
6

¿Hay una manera fácil de detectar si un disco está insertado en la unidad de DVD? No me importa qué tipo de disco (CD, DVD o Blu-Ray)?Detectando si el disco está en la unidad de DVD

+4

http://stackoverflow.com/questions/148742/how-to-detect-if-any-specific-drive-is-a-hard-drive – Musa

+4

Hay una manera fácil de encontrar la respuesta que busca. Se llama buscar. Solo en este sitio hay una plétora de soluciones propuestas. – TheZ

+0

@Musa - Esa pregunta no es lo que estoy preguntando. Esa pregunta se trata de detectar si una unidad es una unidad de CD-ROM o un disco duro. Nada que ver con lo que estoy pidiendo – Icemanind

Respuesta

12

utilizar WMI para detectar si el disco en la unidad de CD/DVD:

foreach (var drive in DriveInfo.GetDrives() 
           .Where(d => d.DriveType == DriveType.CDRom)) 
MessageBox.Show(drive.Name + " " + drive.IsReady.ToString()); 

de here.

DriveType Enumeration pueden ayudarle a qué tipo de disco:

  • CDRom: La unidad es un dispositivo de disco óptico, como un CD o DVD-ROM.
  • Fixed: El disco es un disco fijo.
  • Network: El disco es una unidad de red.
  • NoRootDirectory El disco no tiene un directorio raíz.
  • Ram: El disco es un disco RAM.
  • Removable: La unidad es un dispositivo de almacenamiento extraíble, como una unidad de disquete o una unidad flash USB.
  • Unknown: Se desconoce el tipo de unidad.

de tipo de CD/DVD/Blue-Ray ver IMAPI_MEDIA_PHYSICAL_TYPE enumeration:

  • DESCONOCIDO
  • CDROM
  • CDR
  • CDRW
  • DVDROM
  • DVD-RAM
  • DVDPLUSR
  • DVDPLUSRW
  • DVDPLUSR_DUALLAYER
  • DVDDASHR
  • DVDDASHRW
  • DVDDASHR_DUALLAYER
  • DISCO
  • DVDPLUSRW_DUALLAYER
  • HDDVDROM
  • HDDVDR
  • HDDVDRAM
  • BDROM
  • BDR
  • BDRE
  • MAX

su código puede ser así:

public bool IsDiscAvailable(int driveNumber) 
{ 
    MsftDiscMaster2Class discMaster = new MsftDiscMaster2Class(); 
    string id = discMaster[driveNumber]; 

    MsftDiscRecorder2Class recorder = new MsftDiscRecorder2Class(); 
    recorder.InitializeDiscRecorder(id); 

    MsftDiscFormat2DataClass dataWriter = new MsftDiscFormat2DataClass(); 
    if (dataWriter.IsRecorderSupported(recorder)) 
    { 
     dataWriter.Recorder = recorder; 
    } 
    else 
    { 
     Console.WriteLine("Recorder not supported"); 
     return false; 
    } 
    if (dataWriter.IsCurrentMediaSupported(recorder)) 
    { 
     var media = dataWriter.CurrentPhysicalMediaType; 
     if (media == IMAPI_MEDIA_PHYSICAL_TYPE.IMAPI_MEDIA_TYPE_UNKNOWN) 
     { 
      Console.WriteLine("Unknown media or no disc"); 
     } 
     else 
     { 
      Console.WriteLine("Found disc type {0}", media); 
      return true; 
     } 
    } 
    else 
    { 
     Console.WriteLine("Disc absent or invalid."); 
    } 
    return false; 
} 

de here.

1

How to Detect CD-ROM is loaded in the CD-ROM drive

Desde el enlace de arriba

using System; 
using System.Management; 

class Application 
{ 
    public static void Main() 
    { 
     SelectQuery query = 
      new SelectQuery("select * from win32_logicaldisk where drivetype=5"); 
     ManagementObjectSearcher searcher = 
      new ManagementObjectSearcher(query); 

     foreach(ManagementObject mo in searcher.Get()) 
     { 
      // If both properties are null I suppose there's no CD 
      if((mo["volumename"] != null) || (mo["volumeserialnumber"] != null)) 
      { 
       Console.WriteLine("CD is named: {0}", mo["volumename"]); 
       Console.WriteLine("CD Serial Number: {0}", mo["volumeserialnumber"]); 
      } 
      else 
      { 
       Console.WriteLine("No CD in Unit"); 
      } 
     } 

     // Here to stop app from closing 
     Console.WriteLine("\nPress Return to exit."); 
     Console.Read(); 
    } 
} 
+4

Debido a que los enlaces caducan, el simple hecho de proporcionar un enlace no constituye una buena respuesta. http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers/8259#8259 – spender

+0

tienes razón, pero cuando algo ya sale, ¿por qué no? lo reutilizamos –

+0

He publicado el código ahora, entonces no hay necesidad de votar. –

Cuestiones relacionadas