如何有效偵測用户对程序没有任何操作?

勉励前行 2011-06-23 08:55:30
僅限于自己写的程序.
...全文
81 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
勉励前行 2011-06-23
  • 打赏
  • 举报
回复
問題就是不夠明確,我也不知道哪種方案會比較正確有效。

1. 主程序不激活,可以算无操作了.
2. 主程序虽然激活,无输入,也可以算了.(如果是在等一个长时间的报表时,不就误判了吗?)
3. 主程序虽然激活时,有鼠标经过,这个有些拿不准, 或许要看实现来说吧,暂算无操作吧,但滚轮及按键肯定不行的了.

从实现上说, 可供选择的方式:
1.重载winproc可以了么? 很多消息啊
2.做钩子太麻烦了.

3.如果Application->OnDeactivate OnActivate 事件可以的话是很方便啊

我倾向于第3点, 如果这样就能满足需求的话.

希望能说说,各种情况下,哪些情形检测不到.或者容易漏检查了.


ccrun.com 2011-06-23
  • 打赏
  • 举报
回复
不知道鼠标在自己程序中的窗体上移动算不算操作。
我不懂电脑 2011-06-23
  • 打赏
  • 举报
回复
因为用户对软件都是通过键盘和鼠标使用的,因此问题就转换成用户是否在程序中按了键盘或点击了鼠标。可以监控消息队列里的键盘事件和鼠标事件来判断。
My_Love 2011-06-23
  • 打赏
  • 举报
回复
键盘鼠标钩子算不?
hemiya 2011-06-23
  • 打赏
  • 举报
回复
用TApplicationEvents组件的OnMessage事件, 试试

void __fastcall TApplicationEvents1Message(tagMSG &Msg, bool &Handled)
{
if ((Msg.message == WM_KEYDOWN) || (Msg.message == WM_KEYUP) || (Msg.message == WM_MOUSEWHEEL))
{
// ...
}
}

13,826

社区成员

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

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