0 / 0 / 0
Регистрация: 16.02.2017
Сообщений: 52
1

Событие при подключении USB

12.04.2017, 21:00. Показов 10080. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пытаюсь сделать службу, которая реагирует на подключение USB-устройства. Поискал и нашёл примерно такой способ, но он не работает. Что может быть не так?
C#
1
2
3
4
5
6
7
        new protected void WndProc(ref Message m)
        {
            if (m.Msg == 0x8000)
            {
                MessageBox.Show("USB connected!");
            }
        }
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.04.2017, 21:00
Ответы с готовыми решениями:

Сделать так чтобы при подключении нулевого порта выполнялся один цикл кода а при подключении другого - другой
Как сделать так чтобы при подключении нулевого порта выполнялся один цикл кода, а при подключении...

Отловить событие подключения/отключения USB-носителя
Товарищи, поделитесь ,пожалуйста, работающими примерами по данному вопросу. И если есть какие то...

Событие нажатия кнопки на USB наушниках
История: Имеются наушники Platronics 628 USB. Пока были новые, кнопка "Выключить/включить микрофон"...

Отловить событие подключения/отключения USB-носителя
Может кто нибуть четко написать что и где вписать (читал что нада менять код в главном Program.сs,...

10
75 / 80 / 51
Регистрация: 22.03.2013
Сообщений: 258
12.04.2017, 21:20 2
Лучший ответ Сообщение было отмечено Banana4Man как решение

Решение

C#
1
2
3
4
5
6
7
8
        protected override void WndProc(ref Message m)
        {
            base.WndProc(ref m);
            if (m.WParam.ToInt32() == 0x8000)
                label1.Text = "USB connected!";
            if (m.WParam.ToInt32() == 0x8004)
                label1.Text = "USB  disconnected!";
        }
1
0 / 0 / 0
Регистрация: 16.02.2017
Сообщений: 52
12.04.2017, 21:38  [ТС] 3
Цитата Сообщение от ProgerHack Посмотреть сообщение
C#
1
2
3
4
5
6
7
8
        protected override void WndProc(ref Message m)
        {
            base.WndProc(ref m);
            if (m.WParam.ToInt32() == 0x8000)
                label1.Text = "USB connected!";
            if (m.WParam.ToInt32() == 0x8004)
                label1.Text = "USB  disconnected!";
        }
В типе программы Windows Forms работает, но в службе выдаёт ошибку "ServiceBase" не содержит определение для "WndProc".
0
75 / 80 / 51
Регистрация: 22.03.2013
Сообщений: 258
12.04.2017, 21:59 4
C#
1
2
3
4
5
6
7
            while (true)
            {
                Thread.Sleep(1000);
                foreach (DriveInfo dInfo in DriveInfo.GetDrives())
                    if (dInfo.DriveType == DriveType.Removable && dInfo.IsReady == true)
                        Console.WriteLine("USB connected!");
            }
1
Эксперт .NET
10631 / 6562 / 1515
Регистрация: 25.05.2015
Сообщений: 19,845
Записей в блоге: 14
13.04.2017, 07:42 5
Banana4Man, это делается функцией RegisterDeviceNotification, которая работает и в сервисах:
DEVICE_NOTIFY_SERVICE_HANDLE 0x00000001
The hRecipient parameter is a service status handle.
Добавлено через 2 минуты
См. Служба Windows: отловить подключение/отключение флешки
0
0 / 0 / 0
Регистрация: 16.02.2017
Сообщений: 52
13.04.2017, 20:04  [ТС] 6
Цитата Сообщение от Rius Посмотреть сообщение
это делается функцией RegisterDeviceNotification, которая работает и в сервисах:
Хотелось бы сделать это только на С#
Цитата Сообщение от Rius Посмотреть сообщение
См. Служба Windows: отловить подключение/отключение флешки
и без чужих наработок
0
Эксперт .NET
10631 / 6562 / 1515
Регистрация: 25.05.2015
Сообщений: 19,845
Записей в блоге: 14
13.04.2017, 20:24 7
Тогда у вас будут костыли и велосипеды. Как пример из 4 поста.

Добавлено через 17 минут
Только на C# не получится, программа будет работать в ОС, наверняка Windows, раз уже речь была о службах.
У Windows есть готовые средства именно для уведомления заинтересованных программ, подписавшихся на конкретные события.
Если вы их избегаете, вы избегаете и самого оптимального и быстрого пути работы программы (не разработки кода, хотя это тоже, а скорости выполнения).

Все что вы используете - чужие наработки. C# и .Net Framework - чужие наработки. Windows - и подавно. Весь код, даже костыли, что вы напишете - уже кто-то написал до вас.
Похвально, конечно, но до крайностей опускаться не надо. Наработки надо изучать, чтобы сделать лучше, а не отбрасывать.
0
0 / 0 / 0
Регистрация: 16.02.2017
Сообщений: 52
13.04.2017, 20:37  [ТС] 8
Я просто хочу сделать программу, написанную именной мной, а не сборку других программ. Когда будет время начну изучать С++
0
Эксперт .NET
10631 / 6562 / 1515
Регистрация: 25.05.2015
Сообщений: 19,845
Записей в блоге: 14
13.04.2017, 20:38 9
Тогда изучайте наработки, запоминайте имена подходящих функций.
Потом ищите их в MSDN и реализуйте их использование самостоятельно.

Ваша программа и так уже является сборкой других программ, без которых она даже не запустится.
0
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
31.10.2018, 14:38 10
Цитата Сообщение от Rius Посмотреть сообщение
Добавлено через 2 минуты
См. Служба Windows: отловить подключение/отключение флешки
Добрый день! У меня аналогичная ситуация. Я написал простой WCF сервис, а в нем есть класс для работы с виртуальным ком портом, данные из него он кладет в модель данных, а модель уже через контракт и хост передается клиенту в виде реальных данных. Мне необходимо отслеживать подключение - отключение переходника USB->COM. Как уже писалось выше, у меня до этого в формах и на WPF работало через
WndProc
. Я так понимаю, что в службах это не работает?
И исходя из примера в теме что вы посоветовали, там больше кода для работы с USB накопителем.
0
Эксперт .NET
10631 / 6562 / 1515
Регистрация: 25.05.2015
Сообщений: 19,845
Записей в блоге: 14
31.10.2018, 15:20 11
Jman, Служба Windows: отловить подключение/отключение флешки
На код работы с флешками не смотрите. Нужен код подписки на события подключения/отключения устройств.
0
31.10.2018, 15:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.10.2018, 15:20
Помогаю со студенческими работами здесь

Событие при подключении usb устройства
Здравствуйте уважаемые форумчане. Кто знает как создать событие (вывод сообщения и т.п.) при...

USB адаптер wifi падает скорость при подключении через USB
Добрый день. Перестали нормально работать юсб адаптеры вайфай. При подключении первые пару минут...

Внешний ЖД работает в режиме USB 2.0 при подключении к USB 3.0
Всем привет. Купил вчера SAMSUNG M3 1Tb. Сегодня на работе попробовал подключить его к USB 3.0,...

При подключении usb hdd при загрузке черный экран
Имеется usb жесткий диск подключенный двумя штекерами usb,система стоит на отдельном ssd,при...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru