C# Winform form 窗体N分钟没有操作,自动关闭【效果不理想】
用钩子处理比较好:https://www.cnblogs.com/vipsoft/p/18668517
C#中WndProc(ref Message m)是Control类中的方法,用来处理Windows消息。通过重写这个方法,你可以捕获和处理操作系统发送到窗体的各种消息,如按键、鼠标事件、绘制请求等。WndProc 方法允许你以低级别的方式与操作系统的窗口管理系统进行交互。
- 安全性:处理窗口消息需要小心,因为不正确的处理可能会导致应用程序崩溃或不稳定。
- 性能:尽量避免在WndProc中执行耗时操作,因为这可能会影响到应用程序的响应性。
- 调用基类方法:在处理完你的消息后,务必调用base.WndProc(ref m),以确保消息能够正常传递和由其他处理程序处理。
- 平台调用:有时候,你可能需要使用DllImport来从用户32 API中获取额外的功能或信息。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
System.Windows.Forms.Timer mTimer = new System.Windows.Forms.Timer();
const int WM_KEYDOWN = 0x0100;
private DateTime mRecordTime = DateTime.Now;
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).TotalSeconds >= 30) //记录时间大于1分钟
{
mTimer.Stop();
for (int i = Application.OpenForms.Count - 1; i >= 0; i--)
{
Form item = Application.OpenForms[i];
if (item.Name != this.Name && item.Name != "UserLogin") //关闭不是主窗体的打开窗体
{
item.Close();
}
}
this.WindowState = FormWindowState.Maximized;
}
}
protected override void WndProc(ref Message m)//拦截windows消息
{
if(m.Msg == WM_KEYDOWN)//判断是否为键盘按下
mRecordTime = DateTime.Now;
base.WndProc(ref m);
}
}
本文来自博客园,作者:VipSoft 转载请注明原文链接:https://www.cnblogs.com/vipsoft/p/18668266
浙公网安备 33010602011771号