▲如何得到系统鼠标键盘不动的时间(和同屏保时间一样)

xxiao07 2008-12-23 08:01:03
想得到WINDOWS整个系统鼠标键盘不动的时间(即全局“不动”的时间),而不是对某个程序“不动”的时间(即局部的“不动”的时间)。

请教各为大师!




以下代码只能得到对某个程序“不动”的时间,即局部的“不动”的时间。
==========================================================
static HHOOK hHook = NULL;
static DWORD dwTick = GetTickCount();

void CreateMultilevelFolder(const String );

LRESULT CALLBACK JourRecProc(int nCode,
WPARAM wParam, LPARAM lParam) //检测键盘鼠标动作
{
if (nCode < 0)
return CallNextHookEx(hHook, nCode,
wParam, lParam);
dwTick = GetTickCount(); return 0;
}

............................................................................
hHook = SetWindowsHookEx(WH_JOURNALRECORD,(FARPROC)JourRecProc, HInstance, 0);


void __fastcall TInterfaceForm::Timer1Timer(TObject *Sender)
{
UnDoTimes=(GetTickCount()- dwTick);
...全文
86 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
牧牛人软件 2008-12-24
  • 打赏
  • 举报
回复
楼主的代码没有问题的,得到的是系统不动的时间
qqlpp 2008-12-23
  • 打赏
  • 举报
回复
帮顶
蒋晟 2008-12-23
  • 打赏
  • 举报
回复
GetLastInputInfo
痞子酷 2008-12-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 Waiting4you 的回复:]
你这个代码应该就是全局的:
前提是
1.你要全局HOOK,从你代码上看已经实现了
2.你的HOOK DLL里要把dwTick设置成共享变量:http://topic.csdn.net/t/20031022/10/2381756.html
[/Quote]

----------------
支持,并接分
Waiting4you 2008-12-23
  • 打赏
  • 举报
回复
你这个代码应该就是全局的:
前提是
1.你要全局HOOK,从你代码上看已经实现了
2.你的HOOK DLL里要把dwTick设置成共享变量:http://topic.csdn.net/t/20031022/10/2381756.html
cczlp 2008-12-23
  • 打赏
  • 举报
回复
同意jiangsheng.
在Windows 2000中提供了一个新的函数:GetLastInputInfo(),这个函数使用结构 LASTINPUTINFO 作为参数:

BOOL GetLastInputInfo(PLASTINPUTINFO plii);

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

调用函数GetLastInputInfo()以后, 结构成员lpi.dwTime 中的值便是自上次输入事件发生以后的毫秒数。这个值也就是键盘、鼠标处于空闲状态的时间。
可惜的是这个函数只能在Windows 2000中使用,Windows 9x 或Windows NT4.0不提供此API函数。

13,822

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧