С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
12 / 12 / 5
Регистрация: 16.03.2010
Сообщений: 37
1

Как обнаружить USB Плеер?

30.07.2011, 16:49. Показов 2275. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Подскажите пожалуйста, как обнаружить все устройства подключенные в USB (в частности плеер)?
Я искренне думал, что код
C#
1
2
3
4
5
 DriveInfo[] AllDrives = DriveInfo.GetDrives();
            foreach (DriveInfo driveinfo in AllDrives)
            {
                    listBox1.Items.Add(driveinfo.Name);
            }
выдаст список всех подключенных устройств (из которых потом можно выбрать нужные), но похоже это не совсем так... Не обнаружаються плеер, телефон, камера и прочая перефирия, подключенная к usb. Как это исправить?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.07.2011, 16:49
Ответы с готовыми решениями:

Обнаружить USB-устройство
В программе нужно только проверить, подключено ли некое USB-устройство. Устройство работает через...

Как в xls файле обнаружить обнаружить ненужные связи?
Есть файл, в нем куча листов, плюс модули VBA... При открытии эксель спрашивает обновить ли ему...

Как подключить DVD плеер BBK к нетбуку через USB ?
Огромная прозьба может и не совсем коректная , МОжно ли подключить DVD к нетбуку через юс шнур ,...

DVD плеер с USB
Буду я менять свой лг, на другой двд. Меня интересует двдишник с юсб входом. Смотреть буду фильмы в...

10
Заблокирован
30.07.2011, 17:00 2
C#
1
2
3
4
5
6
        System.IO.DriveInfo[] DI = System.IO.DriveInfo.GetDrives();
            foreach (System.IO.DriveInfo di in DI)
            {
                if (di.DriveType.ToString() == "Removable")
                    listBox1.Items.Add(di.Name );
            }
0
12 / 12 / 5
Регистрация: 16.03.2010
Сообщений: 37
30.07.2011, 17:06  [ТС] 3
К сожалению, этот способ тоже не помогает...
Не смотря на то, что в проводнике Windows плеер определяется в портативных устройствах, в программе я получаю только пустой листбокс.
А нельзя как-нибудь получить доступ к папке "Устройства и принтеры" и найти его оттуда?
0
Заблокирован
30.07.2011, 17:09 4
Попробуй так.
C#
1
2
3
4
5
6
           DriveInfo[] DI = DriveInfo.GetDrives();
            foreach (DriveInfo di in DI)
            {               
                 if (di.DriveType == DriveType.Removable)
                     MessageBox.Show(" Диск " + di.Name + " - съемный диск");
            }
0
12 / 12 / 5
Регистрация: 16.03.2010
Сообщений: 37
30.07.2011, 17:14  [ТС] 5
Находит следующее:
Диск A:\ - но это похоже флоппи, хотя у меня его нету Попытался его в проводнике забить - написал "Вставьте диск"
Диск I:\ - это кард-ридер, тоже не то.
0
Заблокирован
30.07.2011, 17:47 6
Ну если он в проводнике отображается попробуй поэкспериментировать. Возможно
C#
1
DriveType.Unknown
1
Level 2
401 / 275 / 48
Регистрация: 22.11.2010
Сообщений: 785
Записей в блоге: 1
30.07.2011, 19:00 7
C#
1
2
3
4
5
6
7
8
9
private void ShowDrives()
        {
            DriveInfo[] Mas_Drives = DriveInfo.GetDrives();
            for (int i = 0; i < Mas_Drives.Length; i++)
            {
                if (Mas_Drives[i].DriveType == DriveType.Removable)
                    comboBox1.Items.Add(Mas_Drives[i].ToString());
            }
        }
Не знаю почему у вас не выводит, но вот такой код у меня абсолютно отлично выводит все устройства.
1
12 / 12 / 5
Регистрация: 16.03.2010
Сообщений: 37
30.07.2011, 21:05  [ТС] 8
Хм, странно, но у меня все тот же результат: не существующий A:\ и не нужный I:\...
Ладно, или я - дурак, или плеер у меня неправильный забью пока на это дело.
Всем большое спасибо за помощь!
0
Заблокирован
30.07.2011, 21:48 9
Цитата Сообщение от Dozer74 Посмотреть сообщение
не существующий A:\
У меня тоже определялся, пока я в BIOS'е его не отключил.
0
2 / 2 / 1
Регистрация: 21.04.2009
Сообщений: 42
12.09.2011, 15:34 10
А почему Вам нужно найти именно DriveType.Removable? Плеер может определяться как жесткий диск (внешник, например, при DriveType.Removable не видит).

И чтобы не открывать новую тему, может кто-нибудь знает как написать код, чтобы прога отслеживала подключение новых устройств? (Способ через сравнение массивов старых и новых букв устройств не предлагать - фигня)
0
Level 2
401 / 275 / 48
Регистрация: 22.11.2010
Сообщений: 785
Записей в блоге: 1
13.09.2011, 02:35 11
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
        private const int WM_DEVICECHANGE = 0x0219;
        private const int DBT_DEVICEREMOVECOMPLETE = 0x8004;
        private const int DBT_DEVICEARRIVAL = 0x8000;
        private const uint DBT_DEVTYP_VOLUME = 0x00000002;
 
        [StructLayout(LayoutKind.Sequential)]
        private struct DEV_BROADCAST_HDR
        {
            public uint dbch_size;
            public uint dbch_devicetype;
            public uint dbch_reserved;
        }
 
        [StructLayout(LayoutKind.Sequential)]
        private struct DEV_BROADCAST_VOLUME
        {
            public uint dbcv_size;
            public uint dbcv_devicetype;
            public uint dbcv_reserved;
            public uint dbcv_unitmask;
            public ushort dbcv_flags;
        }
 
        protected override void WndProc(ref Message m)
        {
            base.WndProc(ref m);
            if (m.Msg == WM_DEVICECHANGE)
            {
                switch (m.WParam.ToInt32())
                {
                    case DBT_DEVICEARRIVAL:
                        DEV_BROADCAST_HDR dbhARRIVAL = (DEV_BROADCAST_HDR)Marshal.PtrToStructure(m.LParam, typeof(DEV_BROADCAST_HDR));
                        if (dbhARRIVAL.dbch_devicetype == DBT_DEVTYP_VOLUME)
                        {
                            DEV_BROADCAST_VOLUME dbv = (DEV_BROADCAST_VOLUME)Marshal.PtrToStructure(m.LParam, typeof(DEV_BROADCAST_VOLUME));
                            BitArray bArray = new BitArray(new byte[] 
                            {
                                (byte)(dbv.dbcv_unitmask & 0x00FF),
                                (byte)((dbv.dbcv_unitmask & 0xFF00) >> 8),
                                (byte)((dbv.dbcv_unitmask & 0xFF0000) >> 16),
                                (byte)((dbv.dbcv_unitmask & 0xFF000000) >> 24)
                            });
 
                            int DriveLetter = Char.ConvertToUtf32("A", 0);
                            for (int i = 0; i < bArray.Length; i++)
                            {
                                if (bArray.Get(i))
                                    Connect(Char.ConvertFromUtf32(DriveLetter));
                                DriveLetter += 1;
                            }
                        }
                        break;
                    case DBT_DEVICEREMOVECOMPLETE:
                        DEV_BROADCAST_HDR dbhREMOVECOMPLETE = (DEV_BROADCAST_HDR)Marshal.PtrToStructure(m.LParam, typeof(DEV_BROADCAST_HDR));
                        if (dbhREMOVECOMPLETE.dbch_devicetype == DBT_DEVTYP_VOLUME)
                        {
                            DEV_BROADCAST_VOLUME dbv = (DEV_BROADCAST_VOLUME)Marshal.PtrToStructure(m.LParam, typeof(DEV_BROADCAST_VOLUME));
                            BitArray bArray = new BitArray(new byte[] 
                            {
                                (byte)(dbv.dbcv_unitmask & 0x00FF),
                                (byte)((dbv.dbcv_unitmask & 0xFF00) >> 8),
                                (byte)((dbv.dbcv_unitmask & 0xFF0000) >> 16),
                                (byte)((dbv.dbcv_unitmask & 0xFF000000) >> 24)
                            });
 
                            int driveLetter = Char.ConvertToUtf32("A", 0);
                            for (int i = 0; i < bArray.Length; i++)
                            {
                                if (bArray.Get(i))
                                {
                                    this.ShowInTaskbar = false;
                                    this.Hide();
                                }
                                driveLetter += 1;
                            }
                        }
                        break;
                }
            }
        }
 
        string DriveName = "";
 
        private void Connect(string Dir)
        {
            DriveName = Dir + @":\";
            this.Text = "Съёмный диск (" + Dir + @":\)";
            this.ShowInTaskbar = true;
            this.Show();
        }
0
13.09.2011, 02:35
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.09.2011, 02:35
Помогаю со студенческими работами здесь

atmega16+vs1011+USB=mp3 плеер..
Кто-нибудь пробовал читать данные с флешки через USB атмегой16? Мне нужно сделать mp3 плеер на...

Плеер NRG Cinema 4 GB не видит компьютер при подключении к USB
При подключении к компьютеру плеер заряжается, но компьютер его не видет как накопитель, пишет что...

USB 2.0 определяется как USB 3.0, не работает USB-свисток, геймпад не подключается
Не работает беспроводной геймпад speedlink torid sl-6576. Подключаю блютуз свисток к пк, запускаю...

IP Googlebot как обнаружить?
Здравствуйте, Сегодня в инструментах вебмастера на гугле, проверил карты сайта и увидел - ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее: На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru