Чтобы найти EXE окно активно или нет - PullRequest
0 голосов
/ 02 августа 2010

У меня другое требование в одном из моих проектов, когда я запускаю свой exe и заставляю его простаивать (т.е. без щелчка, мин, макс), через некоторое время (таймер) он должен быть автоматически закрыт. Если кто-то нажал до определенного времени, таймер должен сброситься на тот же период. Как я могу узнать, проста ли exe или нет?

Ответы [ 2 ]

1 голос
/ 02 августа 2010

Возможно, вы захотите взглянуть на событие Application.Idle (Примечание: насколько мне известно, это применимо только к приложению WinForms).

Если вы объедините его с таймером, который вы останавливаете / сбрасываете всякий раз, когда ваше приложение получает ввод, это должно дать вам в значительной степени то, что вы ищете.

0 голосов
/ 02 августа 2010

открытый класс 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 = новый GlobalMouseHandler (); handle.onActive + = new GlobalMouseHandler.EventHandlerForActiveState (handle_onActive); Application.AddMessageFilter (ручка); Я использовал этот класс и сделал это.

...