Чтобы получить дополнительную информацию из текущего ответа, так как этот пост находится на вершине большинства запросов.
Вещи для поиска - Digital Signage, это своего рода отраслевое слово.
После GreenScreen Chromecast работает нормально. Greenscreen
хост-решение - это Sign Simple , которое похоже на тот же подход, что и Greenscreen, без необходимости размещения веб-страницы получателя.
Подобные решения с использованием Raspberry Pi можно найти.
Примечательно: с GreenScreen и CastHelloText я не смог получить 1080p только 720p, в некоторых комментариях упоминается видео только в 1080p, но в изображениях 720p, что я также понимаю как html-страницы.
Вы можете подключить основной цикл сообщений и предварительно / постобработать любое сообщение (WM_MOUSEMOVE), какое захотите.
public class Form1 : Form {
private MouseMoveMessageFilter mouseMessageFilter;
protected override void OnLoad( EventArgs e ) {
base.OnLoad( e );
this.mouseMessageFilter = new MouseMoveMessageFilter();
this.mouseMessageFilter.TargetForm = this;
Application.AddMessageFilter( this.mouseMessageFilter );
}
protected override void OnClosed( EventArgs e ) {
base.OnClosed( e );
Application.RemoveMessageFilter( this.mouseMessageFilter );
}
class MouseMoveMessageFilter : IMessageFilter {
public Form TargetForm { get; set; }
public bool PreFilterMessage( ref Message m ) {
int numMsg = m.Msg;
if ( numMsg == 0x0200 /*WM_MOUSEMOVE*/) {
this.TargetForm.Text = string.Format( "X:{0}, Y:{1}", Control.MousePosition.X, Control.MousePosition.Y );
}
return false;
}
}
}
Как насчет этого: в OnLoad вашей формы рекурсивно пройдитесь по всем дочерним элементам управления (и их дочерним элементам) и подключите событие MouseEnter.
Затем всякий раз, когда мышь входит в любого потомка, будет вызван обработчик события. Точно так же вы можете подключить события MouseMove и / или MouseLeave.
protected override void OnLoad()
{
HookupMouseEnterEvents(this);
}
private void HookupMouseEnterEvents(Control control)
{
foreach (Control childControl in control.Controls)
{
childControl.MouseEnter += new MouseEventHandler(mouseEnter);
// Recurse on this child to get all of its descendents.
HookupMouseEnterEvents(childControl);
}
}