监控鼠标键盘空闲时间(多久么有输入操作了):
通常会有这样的场景,用户多久没有了输入操作,程序去做一些事情。不用使用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()比较不常用吧,但是确实很有用的。