要查找EXE窗口是否处于活动状态

时间:2010-08-02 09:42:07

标签: c# winforms c#-2.0

我的一个项目有不同的要求,当我运行我的exe并让它闲置时 (即没有点击,最小,最大),经过一段时间(计时器)后,它应自动关闭。如果有人在特定时间之前点击,则计时器必须在同一时间段内重置。 如何判断exe是否空闲?

2 个答案:

答案 0 :(得分:1)

您可能需要查看Application.Idle事件(注意:据我所知,仅适用于WinForms应用程序)。

如果你将它与一个你的应用程序收到输入时停止/重置的计时器结合起来,这应该可以为你提供你想要的东西。

答案 1 :(得分:0)

公共类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 = new GlobalMouseHandler();             handle.onActive + = new GlobalMouseHandler.EventHandlerForActiveState(handle_onActive);             Application.AddMessageFilter(手柄); 我用过这个课程并完成了这个。

相关问题