Как определить, когда устройство добавлено в систему? - PullRequest
0 голосов
/ 14 июля 2010

У меня уже была эта проблема некоторое время, но я должен ее исправить, так как я должен решить ее сейчас.Я пытаюсь определить, когда устройство подключено к системе в Windows 7 и я получаю WM_DEVICECHANGE очень хорошо, однако сообщение в wParam всегда DBT_DEVNODES_CHANGED.Никогда не DBT_DEVICEARRIVAL или DBT_DEVICEREMOVECOMPLETE.До сих пор мне не повезло гуглить, поэтому я надеюсь, что кто-нибудь укажет мне правильное направление, прежде чем я найду что-то через несколько часов :) Спасибо за ваше время.

Ответы [ 2 ]

1 голос
/ 14 июля 2010

В документации указано, что события DBT_DEVICEARRIVAL и DBT_DEVICEREMOVECOMPLETE должны приниматься по умолчанию. Приложение может зарегистрироваться для получения более подробных событий, вызвав функцию RegisterDeviceNotification. Надеемся, вы получите нужные вам события после регистрации вашего приложения. Обязательно вызовите UnregisterDeviceNotification после закрытия.

Ссылка RegisterDeviceNotification:

http://msdn.microsoft.com/en-us/library/aa363431%28v=VS.85%29.aspx

P / Invoke Подпись:

http://pinvoke.net/default.aspx/user32.RegisterDeviceNotification

UnregisterDeviceNotification ссылка:

http://msdn.microsoft.com/en-us/library/aa363475%28v=VS.85%29.aspx

P / Invoke Подпись:

http://pinvoke.net/default.aspx/user32.UnregisterDeviceNotification

0 голосов
/ 15 июля 2010

Большое спасибо, Флетчер. Мне удалось сделать это для Qt4. Пользователи Qt4 (.6.3) могут добавлять файлы #include в обычном режиме, но вам нужно добавить немного #defines в ваш файл .h:

#define _WIN32_WINNT 0x0501
#define _WIN32_WINDOWS 0x0501
#define WINVER 0x0501

, чтобы можно было распознать типы данных Windows, такие как DEV_BROADCAST_HEADER. Также номер версии, я думаю, зависит от вашей платформы Windows, но не уверен (я использую win 7 atm). Также не забудьте добавить библиотеки в ваши .pro файлы LIBS += "C:\Qt\2010.04\mingw\lib\<library_file>" если вы установили в положение по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...