using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Security.Permissions;
namespace WindowsFormsApplication4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
TestMessageFilter m_messageFilter = null;
private void Form1_Load(object sender, EventArgs e)
{
m_messageFilter = new TestMessageFilter();
Application.AddMessageFilter(m_messageFilter);
Thread th = new Thread(new ThreadStart(JudgeAppIdle));
th.Start();
}
void JudgeAppIdle()
{
while (true)
{
if (m_messageFilter == null)
break;
if (m_messageFilter.isIdle)
{
Console.WriteLine(m_messageFilter.IdleTime.ToString());
if (m_messageFilter.IdleTime.AddMinutes(1) <= DateTime.Now)
{
MessageBox.Show("111");
}
}
Thread.Sleep(5000);
}
}
}
// Creates a message filter.
[SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.UnmanagedCode)]
public class TestMessageFilter : IMessageFilter
{
public DateTime IdleTime = new DateTime();
public bool isIdle = false;
public bool PreFilterMessage(ref Message m)
{
if (m.Msg>=1&& m.Msg<=1024)
{
}
else
{
isIdle = true;
IdleTime = DateTime.Now;
}
return false;
}
}
}