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
分类:
C#
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 本地部署 DeepSeek:小白也能轻松搞定!
· 基于DeepSeek R1 满血版大模型的个人知识库,回答都源自对你专属文件的深度学习。
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 在缓慢中沉淀,在挑战中重生!2024个人总结!
· 大人,时代变了! 赶快把自有业务的本地AI“模型”训练起来!