Зарегистрироваться на событие в Windows

Привет, я хочу сделать что-нибудь, когда карта памяти подключена к ПК. Теперь я использую таймер и проверяю в каждом тике, подключена ли какая-либо карта памяти (используйте DriveInfo или с запросом WMI). Есть ли какая-либо модель, управляемая событиями, доступная? например, я использую событие в моей программе, которое возникает, когда карта памяти подключена к компьютеру?

1 ответ

Решение

Вы хотите обработать сообщение WM_DEVICECHANGE в вашем wndproc. Когда вы справитесь с этим, вы также можете позвонить RegisterDeviceNotification получить уведомление о том, что флешка чисто выталкивается.

Когда вы получаете WM_DEVICECHANGE, вы хотите проверить wParam - DBT_DEVICEARRIVAL (0x800) это то, что вы ищете.

В C++ у вас не должно быть проблем с wndproc. В C# вы захотите переопределить метод WndProc вашей основной формы и проверить m.Msg == 0x219 а также m.WParam == 0x800, Обратите внимание, что не ВСЕ из них будут картами памяти - но вы можете использовать это, чтобы уведомить вас о проверке вставки диска, а не таймер.

Другие вопросы по тегам