Я использую MouseLocation и PointToClient для проверки. А затем используйте его в таймере!
bool IsMouseHover(Control c, Control container)
{
Point p = Control.MousePosition;
Point p1 = c.PointToClient(p);
Point p2 = container.PointToClient(p);
if (c.DisplayRectangle.Contains(p1) && container.DisplayRectangle.Contains(p2))
{
return true;
}
return false;
}
Возможно это вопрос может помочь. Вы можете немного изменить его, чтобы создать собственный REPL.
Вам нужно либо перейти на неблокирующий режим, либо использовать поток.
Я бы лично использовал Twisted для параллелизма, который также предлагает REPL-протокол, который легко интегрировать.