Detectar cuando un mouse o teclado se desconectan en Windows no es trivial, ya que el sistema no envía un evento directo de "desconexión" para periféricos USB o PS/2. Sin embargo, hay varias estrategias que puedes usar:
1. Monitorizar cambios en los dispositivos USB/PS2
- Puedes usar Device Notification (Notificación de dispositivos) en Windows para detectar cuando un dispositivo se conecta o desconecta.
- Esto se logra registrando una ventana para recibir mensajes `WM_DEVICECHANGE`.
2. Usar `RegisterDeviceNotification`
- En tu aplicación, registra los dispositivos de interés (por ejemplo, los dispositivos de entrada) y recibe notificaciones cuando cambien.
Ejemplo básico para registrar notificación:
Luego, en tu ventana, en `WM_DEVICECHANGE`, revisa los eventos:
3. Verificar periódicamente la presencia del dispositivo
- Otra opción es hacer un chequeo periódico, por ejemplo, enviando `GetRawInputDeviceList` y verificando si los dispositivos de entrada aún están presentes.
4. Usar Raw Input API
- La API Raw Input permite detectar eventos de entrada y también puede ayudarte a detectar si un dispositivo ha sido desconectado, ya que los eventos dejan de llegar.
5. Librerías o herramientas externas
- No hay librerías estándar que detecten desconexión de periféricos en tiempo real, pero puedes usar librerías de bajo nivel o drivers específicos para USB.
- La forma más común en Windows es registrar notificaciones con `RegisterDeviceNotification` y manejar `WM_DEVICECHANGE`.
- Para detectar desconexión del mouse/teclado, filtra por los GUIDs de dispositivos de entrada.
- También puedes hacer verificaciones periódicas con `Raw Input` o enumerar dispositivos.