问题如题,请高手指教

解决方案 »

  1.   

    只知道怎么弹出光驱和关闭
    using System;
    using System.Text;
    using System.Runtime.InteropServices;class CloseCD
    {  [DllImport( "winmm.dll", EntryPoint="mciSendStringA", CharSet=CharSet.Ansi )]
      protected static extern int mciSendString( string lpstrCommand, StringBuilder lpstrReturnString, int uReturnLength, IntPtr hwndCallback );  public static void Main()
      {    int ret = mciSendString( "set cdaudio door open", null, 0, IntPtr.Zero );    Console.ReadLine();

        ret = mciSendString( "set cdaudio door closed", null, 0, IntPtr.Zero );
      }
    }
      

  2.   

    magiccoder(或许..未必..不过..) :
    历害,学习你中...........
      

  3.   

    用API
    GetDriveType 得到盘符
    返回值为5即为光驱用DirectoryInfo读取得到的盘符的内容,即可判断是否有盘打开或者弹出
    mciSendString("set CDAudio door open", returnstring, 127, 0)
    mciSendString("set CDAudio door closed", returnstring, 127, 0)
      

  4.   

    我试了试,mciSendString("set CDAudio door closed", returnstring, 127, 0)这个方法的执行时间好长啊.........
      

  5.   

    使用WMI获取驱动器列表 using System.Management; SelectQuery query = 
                    new SelectQuery("SELECT * FROM Win32_LogicalDisk WHERE DriveType = 3");            ManagementObjectSearcher searcher = 
                    new ManagementObjectSearcher(query);            foreach (ManagementBaseObject envVar in searcher.Get()) 
                {
                    this.listBox1.Items.Add(envVar["Name"].ToString());
                }
    如果查询语句中的DriveType 为2,会得到软驱,如果为5,会得到光驱。
      

  6.   

    用WMI得到光驱名称:
     ManagementObjectSearcher searcher = 
               new ManagementObjectSearcher("Select Name from Win32_CDROMDrive");
             foreach(ManagementObject cdrom in searcher.Get())
             {
                Console.WriteLine("Name: {0}\n", 
                              cdrom.GetPropertyValue("Name"));
             }
    当然你也可以用API
      

  7.   

    再写一个API获取光驱名和判断有无光盘的方法:
    string s ="";
    StringBuilder volumeName = new StringBuilder(256);
    int srNum = new int();
    int comLen = new int();
    string sysName = "";
    int sysFlags = new int();
    int result;
    string [] logDrives = System.IO.Directory.GetLogicalDrives();
    for(int i=0;i<logDrives.Length;i++)
    {
    if(api.GetDriveType(logDrives[i])==5)
    {
    s+="Your CD ROM is on drive : "+logDrives[i].ToString()+"\n";
    result = api.GetVolumeInformation(logDrives[i].ToString(),volumeName,256,srNum,comLen,sysFlags,sysName,256);
    if(result==0)
    s+="CD ROM中没光盘";//不必用try,catch吧
    else
    {
    s+="CD ROM 中有光盘,名称: " + volumeName;
    }
    }
    }
    label1.Text=s;
    --------------------------------------------------------------------
    打开光驱:
    api.mciSendString("set CDAudio door open",null, 127, 0);
    关闭光驱:
    api.mciSendString("set CDAudio door closed",null, 127, 0);
    ----------------------------------------------------------------------------------------
    类api中:
    [DllImport("winmm.dll", EntryPoint="mciSendStringA")]
    public static extern int mciSendString (string lpstrCommand, string lpstrReturnString, int uReturnLength, int hwndCallback);
    [DllImport("kernel32.dll", EntryPoint="GetVolumeInformationA")]
    public static extern int GetVolumeInformation (string lpRootPathName,StringBuilder lpVolumeNameBuffer, int nVolumeNameSize, int lpVolumeSerialNumber, int lpMaximumComponentLength, int lpFileSystemFlags, string lpFileSystemNameBuffer, int nFileSystemNameSize);
    [DllImport("kernel32.dll", EntryPoint="GetDriveTypeA")]
    public static extern int GetDriveType (string nDrive);
      

  8.   

    C#实现程序控制光驱门开/关 
    http://hedonister.cnblogs.com/archive/2005/05/12/153735.html