Проблема: когда приложение запускается действием планировщика заданий, главное окно отображается как неактивное, и система уведомляет пользователя, мигающего значок приложения на панели задач. Это по проекту .
Простой обходной путь - установить WindowState
=
FormWindowState.Minimized
окна запуска в конструкторе форм, а затем установить его обратно на FormWindowState.Normal
после того, как окно завершило загрузку своего содержимого и готово к представлению, вызывая событие Shown .
Установка FormWindowState.Normal
вызывает вызов на ShowWindow с nCmdShow
на SW_SHOWNORMAL
:
Активирует и отображает окно . Если окно свернуто или развернуто, система восстанавливает его исходный размер и положение. Приложение должно указывать этот флаг при первом отображении окна.
Окно теперь отображается как обычное, активное и готовое к приему ввода.
Кроме того, код явно устанавливает элемент управления который должен получить входные данные, используя свойство ActiveControl .
Я предложил сделать обработчик Shown
async
и добавить небольшую задержку перед переустановкой свойства WindowState
, чтобы значок панели задач не застревал в мигающем состоянии.
Если Окно необходимо переместить или изменить его размер, это необходимо сделать после сброса WindowState
, так как Окно до этого находится в свернутом состоянии и не будет кэшировать положение значений размера.
Форма StartPosition должна быть установлена в FormStartPosition.Manual
private async void MainForm_Shown(object sender, EventArgs e)
{
await Task.Delay(500);
this.WindowState = FormWindowState.Normal;
this.ActiveControl = [A Control to activate];
}