客户说:
  要加一个自动检测键盘,鼠标是否工作正常的功能。
也就是说,如果键盘或者鼠标不工作了,就要弹出提
示。不过当然不是,晃一下鼠标看动不动,用键盘写
几个字看出不出来判断键盘鼠标是否工作正常。而是
程序自动检测,比如键盘被拔下去了,鼠标被拔掉了。
或者出什么故障了,自动给出提示。我不知道怎么弄?
想问下大家,这个有什么办法可以实现吗?多谢。

解决方案 »

  1.   

    实现键盘和鼠标的过滤驱动,应该有pnp的消息.
      

  2.   

    硬件变更吧
    你看一下WM_DEVICECHANGE
    不过键盘鼠标都没有通信能力
    程序自动去检测坏没坏恐怕实现不了
    你们还是好好和客户说说吧
    除非有特制的输入设备
      

  3.   

    哦,应用层也可以.用RegisterDeviceNotification.
    这是以前的代码,翻出来给你试试吧.
        DEV_BROADCAST_DEVICEINTERFACE NotificationFilter;    ZeroMemory( &NotificationFilter, sizeof(NotificationFilter) );
        NotificationFilter.dbcc_size = 
            sizeof(DEV_BROADCAST_DEVICEINTERFACE);
        NotificationFilter.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
        NotificationFilter.dbcc_classguid = InterfaceClassGuid;    *hDevNotify = RegisterDeviceNotification( hwnd, 
            &NotificationFilter,
            DEVICE_NOTIFY_WINDOW_HANDLE
        );    if(!*hDevNotify) 
        {
            return FALSE;
        }......LRESULT CALLBACK MainWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) 
    {
    static CDevice * pDevice = NULL;
    LPCREATESTRUCT lPCreate = NULL; switch (uMsg) 
    { case WM_DEVICECHANGE:
    switch(LOWORD(wParam))
    {
    case DBT_DEVICEARRIVAL:
    pDevice->Connect();
    break;
    case DBT_DEVICEREMOVECOMPLETE:
    pDevice->DisConnect();
    break;
    case DBT_DEVNODES_CHANGED:
    break;
    case DBT_DEVICEREMOVEPENDING:
    break;
    case DBT_CONFIGCHANGED:
    break;
    default:
    break;
    }
    break;