Registre -se para um evento no Windows
-
27-09-2019 - |
Pergunta
Olá, eu quero fazer algo quando um stick de memória conectado ao PC. Agora eu uso um cronômetro e verifico -o em todos os carrapatos se houver um bastão de memória (use driveInfo ou com consulta WMI), existe algum modelo orientado a eventos disponíveis para fazer? Por exemplo, eu uso um evento no meu programa que aumenta sempre que um bastão de memória é conectado ao computador?
Solução
Você quer lidar com o WM_DEVICECHANGE mensagem em seu wndproc. Quando você lida com isso, você também pode ligar RegisterDeviceNotification
Para obter notificação de que o bastão está sendo ejetado de maneira limpa.
Quando você recebe um WM_DEVICECHANGE
, você quer verificar o wparam - DBT_DEVICEARRIVAL
(0x800) é o que você está procurando.
Em C ++, você não deve ter problemas com o WNDPROC. Em C#, você deseja substituir o seu formulário principal Wndproc método e verificação m.Msg == 0x219
e m.WParam == 0x800
. Observe que nem tudo isso será um bastão de memória - mas você pode usá -lo para notificá -lo para verificar a inserção da unidade em vez de um temporizador.