windows开发常见问题系列--2 鼠标键盘输入相关

监控鼠标键盘空闲时间(多久么有输入操作了):

通常会有这样的场景,用户多久没有了输入操作,程序去做一些事情。不用使用hook什么的,发现有一个api.

        LASTINPUTINFO lpi;
        lpi.cbSize = sizeof(lpi);
        ::GetLastInputInfo(&lpi);

        ///>获取鼠标空闲时间
        long nTime = ::GetTickCount() - lpi.dwTime;
<span style="white-space:pre">	</span>
        GetLastInputInfo()获取的是一个时间点,是时间点。

        模拟鼠标键盘消息:

        点击一下:

    POINT oldPoint;
    ::GetCursorPos(&oldPoint);
    ::SetCursorPos(rect.left + 13, rect.top + 13);
    ::mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP,0,0,0,0);
    ::SetCursorPos(oldPoint.x, oldPoint.y);

 

       模拟键盘输入:

   #include <windows.h>
   void SetNumLock( BOOL bState )
   {
      BYTE keyState[256];

      GetKeyboardState((LPBYTE)&keyState);
      if( (bState && !(keyState[VK_NUMLOCK] & 1)) ||
          (!bState && (keyState[VK_NUMLOCK] & 1)) )
      {
      // Simulate a key press
         keybd_event( VK_NUMLOCK,
                      0x45,
                      KEYEVENTF_EXTENDEDKEY | 0,
                      0 );

      // Simulate a key release
         keybd_event( VK_NUMLOCK,
                      0x45,
                      KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
                      0);
      }
   }

mouse_event() key_event()比较不常用吧,但是确实很有用的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值