C# 查找EXE窗口是否处于活动状态
在我的一个项目中,当我运行exe并使其空闲时,我有一个不同的要求 (即不点击、最小、最大),一段时间(计时器)后应自动关闭。如果有人在特定时间之前单击,计时器必须在同一时间段内重置。C# 查找EXE窗口是否处于活动状态,c#,winforms,c#-2.0,C#,Winforms,C# 2.0,在我的一个项目中,当我运行exe并使其空闲时,我有一个不同的要求 (即不点击、最小、最大),一段时间(计时器)后应自动关闭。如果有人在特定时间之前单击,计时器必须在同一时间段内重置。 如何确定exe是否空闲?您可能需要查看该事件(注意:据我所知,仅适用于WinForms应用程序) 如果您将它与一个计时器结合使用,每当应用程序接收到输入时停止/重置计时器,这将为您提供所需的信息。公共类GlobalMouseHandler:IMessageFilter { public delegate
如何确定exe是否空闲?您可能需要查看该事件(注意:据我所知,仅适用于WinForms应用程序)
如果您将它与一个计时器结合使用,每当应用程序接收到输入时停止/重置计时器,这将为您提供所需的信息。公共类GlobalMouseHandler:IMessageFilter
{
public delegate void EventHandlerForActiveState();
public event EventHandlerForActiveState onActive;
public event EventHandlerForActiveState onStateChanged;
private const int WM_KEYDOWN = 0x100;
//private const int WM_HSCROLL = 0x114;
//private const int WM_VSCROLL = 0x115;
private const int WM_LBUTTONDOWN = 0x201;
private const int WM_LBUTTONUP = 0x202;
private const int WM_RBUTTONDOWN = 0x204;
private const int WM_RBUTTONUP = 0x205;
//private const int WM_MBUTTONDBLCLK = 0x209;
private const int WM_MOUSEWHEEL = 0x20A;
private const int WM_GETMINMAXINFO = 0x024;
public bool PreFilterMessage(ref Message m)
{
if (m.Msg == 275)
{
return false;
}
switch (m.Msg)
{
case WM_LBUTTONDOWN:
if (onActive != null)
onActive();
break;
case WM_LBUTTONUP:
if (onActive != null)
onActive();
break;
case WM_RBUTTONDOWN:
if (onActive != null)
onActive();
break;
case WM_RBUTTONUP:
if (onActive != null)
onActive();
break;
case WM_MOUSEWHEEL:
if (onActive != null)
onActive();
break;
//case WM_ACTIVATE:
// if (onActive != null)
// onActive();
// break;
case WM_KEYDOWN:
if (onActive != null)
onActive();
break;
case WM_GETMINMAXINFO:
if (onStateChanged != null)
onStateChanged();
break;
//case WM_HSCROLL:
// if (onActive != null)
// onActive();
// break;
//case WM_VSCROLL:
// if (onActive != null)
// onActive();
// break;
}
return false;
}
}
GlobalMouseHandler handle=新的GlobalMouseHandler();
handle.onActive+=新的GlobalMouseHandler.EventHandlerForActiveState(handle\u onActive);
Application.AddMessageFilter(句柄);
我使用了这个类并完成了此操作。嗨,rob,谢谢你的回复,实际上我使用了一些非托管代码并实现了它。我将在这里发布它。谢谢,我刚刚更改了你的编辑,你在问题主体中添加了“winforms”,改为将其添加为标记。它更有用地放在那里,并将帮助其他人找到这个问题和它的答案=)错过了一些。检查