с помощью какой конструкции на c# вычислить букву cdrom
От: hellraiser Беларусь  
Дата: 19.04.03 06:25
Оценка:
с помощью какой конструкции на c# вычислить букву cdrom
Re: с помощью какой конструкции на c# вычислить букву cdrom
От: adontz Грузия http://adontz.wordpress.com/
Дата: 19.04.03 06:39
Оценка:
Здравствуйте, hellraiser, Вы писали:

H>с помощью какой конструкции на c# вычислить букву cdrom


Что значит вычислить? А если сидюков несколько?
Есть хорошая WinAPI функция
UINT GetDriveType(LPCTSTR lpRootPathName);

Есть ли для неё С# оболочка я не знаю
A journey of a thousand miles must begin with a single step © Lau Tsu
Re: с помощью какой конструкции на c# вычислить букву cdrom
От: serg_p Украина  
Дата: 19.04.03 19:27
Оценка:
Для таких задач предназначен WMI, в .NET это пространство имен System.Management, вот код перечисляющий все CD-ROM'ы в системе:


ManagementObjectSearcher objectSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_CDROMDrive");
foreach(ManagementObject cdrom in objectSearcher.Get())
    Console.WriteLine(cdrom.GetPropertyValue("Drive"));
Re: с помощью какой конструкции на c# вычислить букву cdrom
От: TK Лес кывт.рф
Дата: 19.04.03 19:41
Оценка:
Hello, "hellraiser"
> с помощью какой конструкции на c# вычислить букву cdrom

Достаточно легко можно получить букву CDROM через System.Management
Posted via RSDN NNTP Server 1.5 beta
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[2]: с помощью какой конструкции на c# вычислить букву cdr
От: TK Лес кывт.рф
Дата: 19.04.03 19:47
Оценка: 12 (1)
Hello, "serg_p"
> Для таких задач предназначен WMI, в .NET это пространство имен System.Management, вот код перечисляющий все CD-ROM'ы в системе:
>

А если использовать MgmtClassGen.exe, то код будет еще более нагляден и проще.
Posted via RSDN NNTP Server 1.5 beta
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[3]: с помощью какой конструкции на c# вычислить букву cdr
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.04.03 20:06
Оценка:
Здравствуйте, TK, Вы писали:

TK>А если использовать MgmtClassGen.exe, то код будет еще более нагляден и проще.


А что это такое?
... << RSDN@Home 1.0 beta 6a >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: с помощью какой конструкции на c# вычислить букву cdr
От: serg_p Украина  
Дата: 20.04.03 22:15
Оценка:
TK>А если использовать MgmtClassGen.exe, то код будет еще более нагляден и проще.

VD>А что это такое?


Утилита, генерирующая класс надстройку над соответствующим WMI классом.
Re[4]: с помощью какой конструкции на c# вычислить букву cdr
От: TK Лес кывт.рф
Дата: 21.04.03 06:31
Оценка:
Здравствуйте, VladD2, Вы писали:

TK>А если использовать MgmtClassGen.exe, то код будет еще более нагляден и проще.

VD>А что это такое?

Практически аналог xsd.exe только для WMI
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re: с помощью какой конструкции на c# вычислить букву cdrom
От: orangy Россия
Дата: 21.04.03 09:05
Оценка:
Здравствуйте, hellraiser, Вы писали:

H>с помощью какой конструкции на c# вычислить букву cdrom

    /// <summary>
    /// Describes available types for local drives
    /// </summary>
    public enum DriveType : int
    {
        /// <summary>
        /// The drive type cannot be determined
        /// </summary>
        Unknown = 0,
        
        /// <summary>
        /// The root path is invalid. For example, no volume is mounted at the path
        /// </summary>
        NotRootDir = 1,

        /// <summary>
        /// The disk can be removed from the drive.
        /// </summary>
        Removable = 2,

        /// <summary>
        /// The disk cannot be removed from the drive.
        /// </summary>
        Fixed = 3,

        /// <summary>
        /// The drive is a remote (network) drive.
        /// </summary>
        Remote = 4,

        /// <summary>
        /// The drive is a CD-ROM drive.
        /// </summary>
        CDROM = 5,

        /// <summary>
        /// The drive is a RAM disk.
        /// </summary>
        RamDisk = 6, 
    }

    /// <summary>
    /// Class for querying drives
    /// </summary>
    public class Drive
    {
        [DllImport("kernel32", CharSet = CharSet.Auto)]
        private extern static DriveType GetDriveType(string rootPath);

        /// <summary>
        /// Return array of all logical drives in system
        /// </summary>
        /// <returns>Array of strings, listing all logical drives in the local system</returns>
        public static string[] GetDrives()
        {
            return Directory.GetLogicalDrives();
        }

        /// <summary>
        /// Return array of logical drives in local system of one of the specified types
        /// </summary>
        /// <param name="driveTypes">Array of driveTypes that should be listed</param>
        /// <returns>Array of strings, listing logical drives of specified type(s)</returns>
        public static string[] GetDrives(DriveType[] driveTypes)
        {
            ArrayList drives = new ArrayList();
            string[] alldrives = Directory.GetLogicalDrives();
            foreach(string drive in alldrives)
            {
                DriveType dt = GetDriveType(drive);
                foreach(DriveType match in driveTypes)                
                    if (dt == match)
                    {
                        drives.Add(drive);
                        break;
                    }
            }
            return (string[])drives.ToArray(typeof(string));
        }

        /// <summary>
        /// Return array of logical drives in local system of the specified type
        /// </summary>
        /// <param name="driveType">Type of drives that should be listed</param>
        /// <returns>Array of strings, listing logical drives of specified type</returns>
        public static string[] GetDrives(DriveType driveType)
        {
            ArrayList drives = new ArrayList();
            string[] alldrives = Directory.GetLogicalDrives();
            foreach(string drive in alldrives)
            {
                DriveType dt = GetDriveType(drive);
                if (dt == driveType)
                    drives.Add(drive);
            }
            return (string[])drives.ToArray(typeof(string));
        }
    }
... << RSDN@Home 1.0 beta 6a | Сейчас понедельник, 16:04, слушаю тишину >>
"Develop with pleasure!"
Re[2]: с помощью какой конструкции на c# вычислить букву cdr
От: Doctorfix  
Дата: 08.07.07 12:24
Оценка:
Здравствуйте, serg_p, Вы писали:

_>Для таких задач предназначен WMI, в .NET это пространство имен System.Management, вот код перечисляющий все CD-ROM'ы в системе:



_>
_>ManagementObjectSearcher objectSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_CDROMDrive");
_>foreach(ManagementObject cdrom in objectSearcher.Get())
_>    Console.WriteLine(cdrom.GetPropertyValue("Drive"));
_>


А почему в таком случае не работает следующий код:

ManagementObjectSearcher cdSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_CDROMDrive");
     foreach (ManagementObject cdRom in cdSearcher.Get())
              listBox1.Items.Add(cdRom["VolumeSerialNumber"].ToString());


Здесь, конечно, не буква CD, но суть-то одна.
Re: с помощью какой конструкции на c# вычислить букву cdrom
От: Igor Trofimov  
Дата: 08.07.07 15:41
Оценка: +2
Вообще, есть стандартный класс System.IO.DriveInfo.
У него есть свойство DriveType типа enum DriveType. Там есть и DriveType.CDRom
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.