2012-07-10 41 views
6

Có cách nào dễ dàng để phát hiện xem đĩa có được lắp vào ổ đĩa DVD không? Tôi không quan tâm loại đĩa nào (CD, DVD hoặc Blu-Ray)?Phát hiện xem đĩa có nằm trong ổ đĩa DVD

+4

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

+4

Có một cách dễ dàng để tìm câu trả lời bạn tìm kiếm. Nó được gọi là tìm kiếm. Chỉ riêng trang web này có rất nhiều giải pháp được đề xuất. – TheZ

+0

@Musa - Câu hỏi đó không phải là những gì tôi hỏi. Câu hỏi đó là về việc phát hiện nếu một ổ đĩa là một ổ đĩa cdrom hoặc một ổ đĩa cứng. Không liên quan gì đến những gì tôi đang yêu cầu – Icemanind

Trả lời

12

Sử dụng WMI để phát hiện nếu đĩa trong ổ đĩa CD/DVD:

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

từ here.

DriveType Enumeration có thể giúp bạn loại đĩa:

  • CDRom: Các ổ đĩa là một thiết bị đĩa quang, chẳng hạn như một đĩa CD hoặc DVD-ROM.
  • Fixed: Biến tần là một đĩa cố định.
  • Network: Biến tần là ổ đĩa mạng.
  • NoRootDirectory Ổ đĩa không có thư mục gốc.
  • Ram: Biến tần là ổ đĩa RAM.
  • Removable: Biến tần là thiết bị lưu trữ di động, chẳng hạn như ổ đĩa mềm hoặc ổ flash USB.
  • Unknown: Loại ổ đĩa không xác định.

cho loại đĩa CD/DVD/Blue-Ray thấy IMAPI_MEDIA_PHYSICAL_TYPE enumeration:

  • UNKNOWN
  • CDROM
  • CDR
  • CDRW
  • DVDROM
  • DVDRAM
  • DVDPLUSR
  • DVDPLUSRW
  • DVDPLUSR_DUALLAYER
  • DVDDASHR
  • DVDDASHRW
  • DVDDASHR_DUALLAYER
  • DISK
  • DVDPLUSRW_DUALLAYER
  • HDDVDROM
  • HDDVDR
  • HDDVDRAM
  • BDROM
  • BDR
  • BDRE
  • MAX

mã của bạn có thể như thế này:

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; 
} 

từ here.

1

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

Từ trên liên kết

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

Vì các liên kết hết hạn, chỉ cần cung cấp liên kết không phải là một câu trả lời hay. http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers/8259#8259 – spender

+0

bạn là đúng, nhưng khi một điều đã thoát khỏi lý do tại sao không chúng tôi sử dụng lại nó –

+0

Tôi đã đăng mã ngay bây giờ, sau đó không cần phải bỏ phiếu xuống. –

Các vấn đề liên quan