程序处于开启状态的时候,如果长时间(如:20分钟)没有操作则退出程序,怎么检测?
我搜到两种方法可都不知道怎么用:
一种是用键盘钩子Hook
一种是用Application.AddMessageFilter
希望高手指点
我搜到两种方法可都不知道怎么用:
一种是用键盘钩子Hook
一种是用Application.AddMessageFilter
希望高手指点
解决方案 »
- 想开发一个手机wap,有些细节不是很清楚,请教一下!
- vsts 单元测试 如何读取web.config的值
- C#中水晶披表的问题,请教各位了
- 返回值问题
- 高分:如何获取捆绑在datagrid模板中<ItemTemplate>里<TABLE id="mytable">里显示的当前记录字段的值?
- c# 调用fotain77的dll问题
- 前辈,请指教WinForm中DataGrid控件分页显示的问题,要求功能全面,且效率高,先谢谢大家了
- socket异步接收,内存持续增大
- 水晶报表速度问题!
- vs.net7能不能装在中文版的win2000上??请速答
- 我想用自制的图片替换鼠标的指针,该怎么做?
- 总是提示float tcz = float.Parse(label15.Text);输入字符串格式不正确
在拉个TIMER 来检测时间变量如果和系统时间错20分钟 退出程序
在timer1_Tick里判断累计20分钟后Application.Exit就行了
internal class MyMessager : IMessageFilter
{
public bool PreFilterMessage(ref Message m)
{
//如果检测到有鼠标或则键盘的消息,则使计数为0.....
if (m.Msg == 0x0200 || m.Msg == 0x0201 || m.Msg == 0x0204 || m.Msg == 0x0207)
{
iOperCount = 0;
} return false;
}
}
消息检测里这样写:MyMessager msg = new LockMessager();
Application.AddMessageFilter(msg);
定时器里不停的对iOperCount 进行加1操作,然后判断总时间是否超过你要的时间段,超过则直接退出
Application.Exit()明白了没?
Application.AddMessageFilter(msg);
public Form1()
{
InitializeComponent();
MyMessager msg = new MyMessager();
Application.AddMessageFilter(msg);
timer1.Start();
} static int iOperCount = 0;
internal class MyMessager : IMessageFilter
{
public bool PreFilterMessage(ref Message m)
{
//如果检测到有鼠标或则键盘的消息,则使计数为0.....
if (m.Msg == 0x0200 || m.Msg == 0x0201 || m.Msg == 0x0204 || m.Msg == 0x0207)
{
iOperCount = 0;
} return false;
}
} private void timer1_Tick(object sender, EventArgs e)
{
iOperCount++;
if (iOperCount > 100)
{
Application.Exit();
}
}