C#30分钟没有使用系统自动退出

DandyLong8888 2014-08-06 01:48:21
我使用的是C# C/S结构Winform程式,现需要实现如下功能:
当用户打开了Winform程式,现在要做一个当用户30分钟没有使用系统,系统自动退出或使用不了的功能,请给我一点建议。
...全文
908 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
hengbufat 2014-08-08
  • 打赏
  • 举报
回复
将时间重置,否则一直减,减到0就退出计时器回去调用GetLastInputInfo
smthgdin_020 2014-08-08
  • 打赏
  • 举报
回复
2个计时器+GetLastInputInfo搭配使用。 windowsstate正常的时候,1个计时器工作,另一个置0并停止工作,工作的计时器回去调用GetLastInputInfo;托盘的话,那个包含GetLastInputInfo的计时器置0并停止工作,另一个开始及时30分钟。
DandyLong8888 2014-08-08
  • 打赏
  • 举报
回复
(急)是希望不用我的应用程式30分钟就自动退出,但api函数GetLastInputInfo是获取整个操作系统的情况,例如如果我把应用程式最小化后,再使用其它应用程式,api函数GetLastInputInfo获取的时间就不是我要的了。
风吹腚腚凉 2014-08-07
  • 打赏
  • 举报
回复
系统启动开启单独线程,处理,线程用来监听全局的鼠标和键盘消息,说白了就是钩子,然后当有消息传过来的时候,起始时间重置,不过这样比较2, 我记得不错的话,windows 操作系统会有个文件记录你所有的操作,你可以读取那个的最后的更新时间? 这样靠谱不?
成都-狗蛋儿 2014-08-07
  • 打赏
  • 举报
回复
引用 11 楼 caozhy 的回复:
http://download.csdn.net/detail/caozhy/4646408
貌似发错了吧?你应该发在这个帖子里吧? http://bbs.csdn.net/topics/390852530
threenewbee 2014-08-06
  • 打赏
  • 举报
回复
http://download.csdn.net/detail/caozhy/4646408
gwhzh 2014-08-06
  • 打赏
  • 举报
回复
引用 9 楼 gdf87521 的回复:
这一点windows系统早有考虑,各种im的一段时间不操作自动转为离开状态就是调用的系统接口 查一下api函数GetLastInputInfo,可以获取上一次鼠标键盘动作至今的时间,这是正规方法
差点以为是在主窗口里,加一个Timer来做这个事情。
成都-狗蛋儿 2014-08-06
  • 打赏
  • 举报
回复
这一点windows系统早有考虑,各种im的一段时间不操作自动转为离开状态就是调用的系统接口 查一下api函数GetLastInputInfo,可以获取上一次鼠标键盘动作至今的时间,这是正规方法
dongdongdongJL 2014-08-06
  • 打赏
  • 举报
回复
你没有使用的标准是什么? 鼠标和键盘事件,如果没有使用,就认为是没有使用系统,就可以。 还是你的那个客户端没有被使用?锁屏或者系统推出都可以的。
weiyulin510037 2014-08-06
  • 打赏
  • 举报
回复
我刚学,不过我认为你可以捕捉你程序的鼠标键盘消息啊,如果30分钟之内没有,就退出,不知道说的对不对,当然这个需要新加一个线程来完成
於黾 2014-08-06
  • 打赏
  • 举报
回复
引用 5 楼 DandyLong8888 的回复:
现在是我们应用比较复杂,不可以在每个子窗体中操作按钮中增加此功能。我们程式有286个子窗体,每个窗体又有很多按钮
通过鼠标API和键盘API直接获取鼠标和键盘动作,这样就不用为每个控件另外添加事件了. 只要有动作,就将时间重置,否则一直减,减到0就退出. 登陆后时间重置.
DandyLong8888 2014-08-06
  • 打赏
  • 举报
回复
现在是我们应用比较复杂,不可以在每个子窗体中操作按钮中增加此功能。我们程式有286个子窗体,每个窗体又有很多按钮
by_封爱 版主 2014-08-06
  • 打赏
  • 举报
回复

timer.Interval = 1000 *30;
修正下

timer.Interval = 1000 *60*30;
於黾 2014-08-06
  • 打赏
  • 举报
回复
我做过一个简单的退出登录功能 维护一个int型的变量,timer设置每秒减1 然后在按钮和表格操作事件里重置这个时间
by_封爱 版主 2014-08-06
  • 打赏
  • 举报
回复


var timer = new System.Timers.Timer();
            timer.Interval = 1000 *30;
            timer.Enabled = true;
            timer.Elapsed += (sender, e) =>
            {
                 Application.exit();
            };
            timer.Start();
OnMyownRoad 2014-08-06
  • 打赏
  • 举报
回复
你开辟一个线程 用线程记录用户没操作系统的时间 如果超过三十分钟 关闭程序

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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