概述:Winform实现界面程序长时间不存在鼠标键盘输入操作后,关闭程序中显示的所有界面,除主界面外
方法一:使用窗体的WndProc函数
- 1.在主窗体软件中使用消息过滤器,捕获软件内所有输入操作,即使用
protected override void WndProc(ref Message m)
- 2.设置定时器System.Windows.Forms.Time()
- 3.判断时间间隔,如果时间间隔大于设定值,则获取所有打开的子窗体并关闭
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
System.Windows.Forms.Timer mTimer = new System.Windows.Forms.Timer();
const int WM_KEYDOWN = 0x0100;
private void Form1_Load(object sender, EventArgs e)
{
mTimer.Tick += T1_Tick;
mTimer.Start();//开启定时器
}
void T1_Tick(object sender, EventArgs e)
{
if ((DateTime.Now - mRecordTime).TotalMinutes >= 1)//记录时间大于1分钟
{
int openFormNum = Application.OpenForms.Count;
if(openFormNum > 1)
{
for(int i = 0; i < Application.OpenForms.Count; i++)
{
Form item = Application.OpenForms[i];
if (item.Name != mainForm.Name && item.Text != mainForm.Text)//关闭不是主窗体的打开窗体
{
item.Close();
i--;
}
}
}
}
}
protected override void WndProc(ref Message m)//拦截windows消息
{
if(m.Msg == WM_KEYDOWN)//判断是否为键盘按下
mRecordTime = DateTime.Now;
base.WndProc(ref m);
}
}