Я пишу приложение C # Windows Forms для Windows 10, аналогичное системной виртуальной клавиатуре. Приложение самое верхнее, и оно не отвлекает внимание, переопределяя CreateParams и ShowWithoutActivation:
private const int WS_EX_NOACTIVATE = 0x08000000;
protected override CreateParams CreateParams
{
get
{
CreateParams params = base.CreateParams;
params.ExStyle |= WS_EX_NOACTIVATE;
return (params);
}
}
protected override bool ShowWithoutActivation
{
get { return true; }
}
Приложение может быть свернуто пользователем в системный трей. Это не меняет фокус. Однако при восстановлении приложения из системного трея (щелкнув значок приложения) текущее активное окно теряет фокус.
Есть ли способ избежать такого поведения и удерживать активное окно (до щелчка мыши) сфокусированным?
Приложение свернуто и восстановлено с помощью:
this.Hide(); // minimize on close event
..
this.Show(); // restore on notify icon click event
Здесь был похожий вопрос, но он довольно устарел:
Предотвращение кражи значка в системном трее при нажатии