C/Visual C - Mouse and keyboard

 
Vista:

Mouse and keyboard

Publicado por Xx Argentino Sexual xX (69 intervenciones) el 20/07/2003 09:55:24
Alguien sabe como puede detectar cuado se desconcta el mouse y/o el teclado??? Se q se puede hacer, pero no encuentro la forma, no si hay alguna libreria q controle los perifericos o algo asi...
El q me pueda dar una mano, se lo agradeceria. Desde ya muchas gracias. Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Cómo detectar desconexión del mouse y teclado en Windows

Publicado por Alejandro (1286 intervenciones) el 15/07/2025 22:45:31
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:

1
2
3
4
5
6
7
8
9
10
DEV_BROADCAST_DEVICEINTERFACE dbi;
HDEVNOTIFY hDevNotify;
 
ZeroMemory(&dbi, sizeof(dbi));
dbi.dbcc_size = sizeof(dbi);
dbi.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
// Puedes filtrar por clase o GUID específico si quieres
// dbi.dbcc_classguid = GUID_DEVINTERFACE_MOUSE; // por ejemplo
 
hDevNotify = RegisterDeviceNotification(hWnd, &dbi, DEVICE_NOTIFY_WINDOW_HANDLE);

Luego, en tu ventana, en `WM_DEVICECHANGE`, revisa los eventos:

1
2
3
4
5
6
7
case WM_DEVICECHANGE:
    if (wParam == DBT_DEVICEREMOVECOMPLETE) {
        // Un dispositivo se desconectó
    } else if (wParam == DBT_DEVICEARRIVAL) {
        // Un dispositivo se conectó
    }
    break;

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.

---

Resumen


- 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.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar