События в Windows - PullRequest
       26

События в Windows

0 голосов
/ 17 сентября 2009

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

Например:

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

Ответы [ 3 ]

1 голос
/ 17 сентября 2009

В одном методе: да.

Вы должны реализовать функцию DefWindowProc , которая обрабатывает все события и сообщения. К сожалению, не только пользовательские события, но и все. Но вы должны легко их отфильтровать.

1 голос
/ 17 сентября 2009

Используйте API SetWindowsHookEx для настройки локального потока WH_CALLWNDPROC. См. MSDN документацию для получения полной информации.

Это вызовет одну функцию в вашем приложении для каждого сообщения, полученного из Windows.

0 голосов
/ 17 сентября 2009

Если вы используете Windows формы .NET, добавьте следующее в основную форму приложения:

protected override void OnControlAdded(ControlEventArgs e)
{
    e.Control.Click += new EventHandler(Control_Click);
    e.Control.KeyDown += new KeyEventHandler(Control_KeyDown);  
    base.OnControlAdded(e);
}

void Control_KeyDown(object sender, KeyEventArgs e)
{
    // Hande all keydown events, sender is the control  
    Debug.WriteLine( sender.ToString() +  "  -  KeyDown");
}

void Control_Click(object sender, EventArgs e)
{
    // Hande all click events, sender is the control  
    Debug.WriteLine(sender.ToString() + "   -  Click");

}

protected override void OnControlRemoved(ControlEventArgs e)
{
    e.Control.KeyDown -= Control_KeyDown;
    e.Control.Click -= Control_Click;

    base.OnControlRemoved(e);
}

Просто добавьте любые дополнительные события, которые вам нужны (такие как KeyPress, MouseEnter, MouseDown и т. Д.), Аналогичным образом. Это немного чище и проще, чем вникать в Windows API.

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