是否有一种简单的方法可以检测光盘是否插入DVD驱动器中?我不在乎什么样的光盘(CD,DVD或蓝光)?检测光盘是否在DVD驱动器中
回答
使用WMI来检测是否磁盘在CD/DVD驱动器:
foreach (var drive in DriveInfo.GetDrives()
.Where(d => d.DriveType == DriveType.CDRom))
MessageBox.Show(drive.Name + " " + drive.IsReady.ToString());
从here。
DriveType Enumeration可以帮你什么样的光盘:
CDRom
:驱动器的光盘设备,如CD或DVD-ROM。Fixed
:驱动器是一个固定磁盘。Network
:驱动器是网络驱动器。NoRootDirectory
驱动器没有根目录。Ram
:驱动器是RAM磁盘。Removable
:驱动器是可移动存储设备,例如软盘驱动器或USB闪存驱动器。Unknown
:驱动器的类型未知。
的一种CD/DVD的/蓝光看到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
- BD-ROM
- BDR
- BD-RE
- MAX
你的代码可能是这样的:
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;
}
从
here
。
How to Detect CD-ROM is loaded in the CD-ROM drive
从上面的链接
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();
}
}
由于链接到期,因此仅提供链接并不构成一个好的答案。 http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers/8259#8259 – spender 2012-07-10 19:26:00
你是对的,但是当事情已经存在,为什么不我们重复使用它 – 2012-07-10 19:27:24
我已经发布了代码,然后没有必要投下来。 – 2012-07-10 19:29:51
- 1. 检测磁盘是否为闪存驱动器
- 2. 检测驱动器c中的dvd插入的最佳方法#
- 3. 确定驱动器中有光盘
- 4. 如何在java中检查DVD-RAM驱动器中的CD或DVD
- 5. 如何检测是否有任何特定的驱动器是硬盘驱动器?
- 6. 如何检测驱动器在C#中是否有回收站?
- 7. 禁用使用光盘驱动器(VB.NET)
- 8. 在Linux中检测安装的硬盘驱动器
- 9. 检查是否存在windows驱动器
- 10. 检测CMD中的可移动驱动器盘符
- 11. 检查驱动器是否是主驱动器
- 12. C++ \ Win32的信息有关的所有驱动器:硬盘驱动器,USB驱动器,光盘驱动器,软盘驱动器等
- 13. 有没有办法检测驱动器是否是SSD?
- 14. 如何检测USB闪存驱动器的盘符USB闪存驱动器的
- 15. 逻辑驱动器作为DVD驱动器
- 16. 如何获得所有驱动器的列表,但也可以获取相应的驱动器类型(可移动,本地磁盘或光盘,DVD-ROM等)?
- 17. AppleScript检测新驱动器
- 18. 检测笔式驱动器
- 19. 如何使用批处理代码检测DVD/CD驱动器的字母
- 20. 如何检测键盘是否存在
- 21. 检查文件路径是否在物理上位于硬盘驱动器
- 22. USB闪存驱动器模拟(如CD/DVD rom虚拟驱动器) - 是否有可能
- 23. 在Java中区分CD驱动器和硬盘驱动器
- 24. FindFirstFile导致“驱动器中没有光盘”错误
- 25. 在Windows中检测DVD刻录机
- 26. 检查共享网络驱动器中是否存在文件
- 27. Powershell - 检查CD是否在CD-ROM驱动器中
- 28. 获取CD,DVD,蓝光光盘映像的API?
- 29. 如何在C#应用程序中检测没有IMAPI的CD/DVD驱动器中的介质类型?
- 30. 检测是否从psycopg2光标读取?
http://stackoverflow.com/questions/148742/how-to-detect-if-any-specific-drive-is-a-hard-drive – Musa 2012-07-10 19:22:46
有一种简单的方法可以找到你要找的答案。它被称为搜索。仅在这个网站上就有很多提出的解决方案。 – TheZ 2012-07-10 19:24:52
@Musa - 这个问题不是我要问的。这个问题是关于检测驱动器是CDROM驱动器还是硬盘驱动器。与我所要求的无关 – Icemanind 2012-07-10 19:40:48