Зарегистрироваться на событие в Windows
Привет, я хочу сделать что-нибудь, когда карта памяти подключена к ПК. Теперь я использую таймер и проверяю в каждом тике, подключена ли какая-либо карта памяти (используйте DriveInfo или с запросом WMI). Есть ли какая-либо модель, управляемая событиями, доступная? например, я использую событие в моей программе, которое возникает, когда карта памяти подключена к компьютеру?
1 ответ
Вы хотите обработать сообщение WM_DEVICECHANGE в вашем wndproc. Когда вы справитесь с этим, вы также можете позвонить RegisterDeviceNotification
получить уведомление о том, что флешка чисто выталкивается.
Когда вы получаете WM_DEVICECHANGE
, вы хотите проверить wParam - DBT_DEVICEARRIVAL
(0x800) это то, что вы ищете.
В C++ у вас не должно быть проблем с wndproc. В C# вы захотите переопределить метод WndProc вашей основной формы и проверить m.Msg == 0x219
а также m.WParam == 0x800
, Обратите внимание, что не ВСЕ из них будут картами памяти - но вы можете использовать это, чтобы уведомить вас о проверке вставки диска, а не таймер.