Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/14: Рейтинг темы: голосов - 14, средняя оценка - 4.57
12 / 12 / 3
Регистрация: 22.10.2010
Сообщений: 137

Контроль USB-портов из консольного приложения

06.03.2012, 23:54. Показов 2814. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте всем. Вот какой вопрос:
Как можно принимать сообщения системы типа: DBT_DEVICEARRIVAL или WM_DEVICECHANGE не используя
C#
1
2
3
4
5
protected override void WndProc(ref Message m)
        {
            .......................
                
         }
так как этот вариант требует сборку System.Windows.Form, а сделать прием сообщений в консольном варианте, чтобы потом из этого сделать класс для использования в проектах тех же Form (но чтобы это было просто вида Class {} с некими полями и свойствами)

Читал Агурова про его Class SetupAPI, но там слишком сложно.

по форуму поискал https://www.cyberforum.ru/sear... id=4200130, но там все одно и тоже

Спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.03.2012, 23:54
Ответы с готовыми решениями:

Отключение/включение USB портов
можно написать в коде программу, на отключение включение портов USB?

Печать на USB принтер в Win XP из консольного приложения С++ Win32?
Возможно ли из консольного приложения Win32 (без CLR, Unicode и пр.) в Visual C++ 2010 организовать печать на USB принтер? #if MSDOS ...

Контроль портов Atmega16
В последнее время ловлю себя на мысли, что у меня талант "генерировать глюки" на микроконтроллерах. А теперь по теме. USB-HID устройство на...

4
90 / 89 / 13
Регистрация: 28.09.2010
Сообщений: 262
07.03.2012, 16:30
http://msdn.microsoft.com/en-u... s.85).aspx

Встаем на WH_CALLWNDPROC

http://pinvoke.net/default.asp... dowsHookEx - как реализовать на C#
1
12 / 12 / 3
Регистрация: 22.10.2010
Сообщений: 137
07.03.2012, 17:33  [ТС]
спасибо большое за подсказку, но не сочтите за наглость, можно ещё хотя бы часть примерного кода.
0
90 / 89 / 13
Регистрация: 28.09.2010
Сообщений: 262
11.03.2012, 19:27
http://msdn.microsoft.com/ru-r... s).aspx#S3

Статья на английском, но разобраться можно. Там даже класс реализованный есть. Единственно что, надо добавить описание структуры CWPSTRUCT, создать класс LocalWindowsHook с типом HookType=WH_CALLWNDPROC. Тогда, при отправке сообщения в окна будет срабатывать событие HookInvoked
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 [StructLayout(LayoutKind.Sequential)]
    public struct CWPSTRUCT
    {
        public IntPtr lparam;
        public IntPtr wparam;
        public int message;
        public IntPtr hwnd;
    }
 
LocalWindowsHook lwh=new LocalWindowsHook(HookType.WH_CALLWNDPROC);
lwh.HookInvoked+=new HookEventHandler (MyHandler)
 
public void MyHandler(object sender, HookEventArgs e)
{
CWPSTRUCT struct=(CWPSTRUCT)Marshal.PtrToStructure(e.lParam,typeof(CWPSTRUCT));
if (struct.message==WM_DEVICECHANGE)
{
blablabla
}
}
Это навскидку, но думаю хватит для решения задачи.
1
12 / 12 / 3
Регистрация: 22.10.2010
Сообщений: 137
17.03.2012, 23:07  [ТС]
чего-то не хватает мне знаний для этой задачи...

я нашёл этот класс (автора Dino Esposito), подписался на событие.... но оно не разу не сработало, как-бы я не старался.

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
class Programm_1
    {
        const int WM_DEVICECHANGE = 0x0219;
        const int DBT_DEVICEARRIVAL = 0x8000;
        const int DBT_DEVICEREMOVECOMPLETE = 0x8004;
 
        [StructLayout(LayoutKind.Sequential)]
        public struct CWPSTRUCT
        {
            public IntPtr lparam;
            public IntPtr wparam;
            public int message;
            public IntPtr hwnd;
        } 
 
        static void Main()
        {
            LocalWindowsHook lwh = new LocalWindowsHook(LocalWindowsHook.HookType.WH_CALLWNDPROC);
            lwh.HookInvoked += new LocalWindowsHook.HookEventHandler(lwh_HookInvoked);
            Console.ReadLine();
        }
 
        static void lwh_HookInvoked(object sender, LocalWindowsHook.HookEventArgs e)
        {
            Console.WriteLine("событие произошло");
            CWPSTRUCT struct1 = (CWPSTRUCT)Marshal.PtrToStructure(e.lParam, typeof(CWPSTRUCT));
            if (struct1.message == DBT_DEVICEARRIVAL)
            {
               Console.WriteLine("Вроде как подмонтировали");
            }
        }
    }
Вложения
Тип файла: rar LocalWindowsHook.rar (1.6 Кб, 31 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.03.2012, 23:07
Помогаю со студенческими работами здесь

На 4 из 5 портов USB перстала работать флешка и USB модем
Собственно, мышь и динамики через те порты пашут, а вот модем и флеха только через передний: через задние флеха в проводнике не...

Запуск консольного приложения из другого приложения
Я понимаю, что мой вопрос уже разжеван. Однако точного ответа я пока на него не нашел. У меня есть некоторое приложение. Я хочу по...

Проект консольного приложения из Windows приложения
привет всем. В чем может быть ошибка? 1>MSVCRTD.lib(crtexew.obj) : error LNK2019: ссылка на неразрешенный внешний символ _WinMain@16 в...

Отключение usb портов
Всем привет! Возникла такая проблема. Есть 20 машин, учебный класс, на них стоит win7, нужно отключить usb-порты, чтобы не было такого,...

расширители USB-портов
Мне на ноуте не хватает USB-портов. А всяких устройств уже много - программатор, JTAG-отладчик, пара мостов USB-UART. И все они требуют...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru