получать последние события - PullRequest
0 голосов
/ 27 января 2011

как я могу увидеть последние события, которые вызвала моя программа?

например все события onClick и onPaint

Ответы [ 2 ]

3 голосов
/ 27 января 2011

Это зависит, какие именно события?Только события из элементов управления или все события или что?

Существует 4 альтернативных способа:
a) Если вы сами создаете объекты -> регистрируете события самостоятельно
b) Если вам нужны такие события Windows, какщелкнуть, нарисовать или что-нибудь -> зарегистрировать фильтр сообщений
в) Если это какой-то особый класс, могут существовать недокументированные способы перехвата вызовов в управляемом коде, но это действительно зависит.
г) Если нетдругие способы, которыми вы все еще можете взломать, используя указатели (например, перехват API или что-то в этом роде)

0 голосов
/ 02 февраля 2011

Оператор решил вариант b в моем предыдущем посте:

Application.AddMessageFilter(new MyMessageFilter());

class MyMessageFilter:IMessageFilter
{
    void PreFilterMessage(ref Message m)
    {
        Control target=Control.FromHandle(m.HWnd);
        //if(target!=null)
        switch((WM)m.Msg)
        {
            case WM.LBUTTONDOWN://left mouse click
            uint x=((uint)m.LParam)&0xFFFF;
            uint y=((uint)m.LParam)>>16;
            ...
            break;
        }
    }
}

WM-enum можно найти здесь: http://pinvoke.net/default.aspx/Enums/WindowsMessages.html

для получения дополнительных сообщений посмотрите на msdn:
- http://msdn.microsoft.com/en-us/library/ff468861%28v=VS.85%29.aspx
- http://msdn.microsoft.com/en-us/library/ff468877%28v=VS.85%29.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...