系统一定时间不响应鼠标键盘消息后自动注销功能

lc8080 2010-04-23 03:47:55
代码基本完成,但功能上有些问题,问题描述如下:

1.主程序为一对话框,在对话框中加载DLL安装鼠标键盘钩子,设置注销时间 TT;
2.在DLL中设置全局鼠标键盘钩子,钩子函数一有消息就刷新时间变量 Time;
3.创建一个线程监视Time值变化,如当前时间减去Time超过预设时间,就向主程序发送自定义消息
4.主程序接到消息后自动注销自身

出现问题地方:
钩子函数中刷新时间:Time = clock();
线程中监视时间:if(clock() - Time > TT) PostMessage(WM_MSG, 0, 0);
当主程序获得焦点时:在线程中读取Time值正确,鼠标键盘TT时间不用后自动注销主程序。
当主程序失去焦点时:在线程中读取Time值为0,无论鼠标键盘是否使用都在TT时间后注销主程序。

求各位帮帮忙,给点意见!!!
最好是留个信箱,我把程序发过去,帮我调调!!
谢谢各位!!
...全文
177 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
MoXiaoRab 2010-04-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 cnzdgs 的回复:]
如果你只是要检测输入空闲时间,用GetLastInputInfo即可,不用SetWindowsHookEx。
[/Quote]
就是。
http://hi.baidu.com/tr0j4n/blog/item/aca27611710b33f5c3ce792a.html
cnzdgs 2010-04-24
  • 打赏
  • 举报
回复
如果你只是要检测输入空闲时间,用GetLastInputInfo即可,不用SetWindowsHookEx。
cnzdgs 2010-04-24
  • 打赏
  • 举报
回复
共享变量必须初始化,否则无效。

另外,建议你改用WH_KEYBOARD_LL和WH_MOUSE_LL,这种方式不需要注入到其它进程,所以可以不用DLL、不涉及进程间通讯、安全软件一般也不会报警……
lc8080 2010-04-23
  • 打赏
  • 举报
回复
设置共享数据了 Time 为共享数据
visualassist4680,你做过啊,给我留个mail吧 我给你发代码,你帮我看看,我现在很郁闷,弄不明白是怎么回事!
visualassist4680 2010-04-23
  • 打赏
  • 举报
回复
是否没有设置共享数据段,
以前写给,没发现有焦点问题,数据都是正常的

15,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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