Есть такая задача.
Работает программа. В фоновом режиме она проверяет наличие некоторых событий. Если событие есть, то показывается специальная форма-оповещение. Но форма эта должна отображаться в панели задач и не должна забирать на себя фокус. Кроме того:
— если форма на заднем фоне (на главным окном), то при наступлении события она должна показываться (не беря на себя фокус опять же)
— если форма оповещения свернута, то при наступлении события она должна показываться (не беря на себя фокус)
— если форма оповещения закрыта (но висит в памяти), то при наступлении события она должна показываться (не беря на себя фокус)
— если пользователь работает в другом приложении, то при наступлении события она должна показываться (не беря на себя фокус)
— форма не должна быть модальной или иметь признак "всегда сверху"
Что пока получилось:
— В панели задачи мы сидим.
— Первый показ окна оповещения срабатывает (после Create).
Не получилось:
— Второй и следующие показы не хотят показывать окно. Оно остается на заднем фоне.
Как в панель задач пихал окно писать не буду, оно вроде понятно.
Окно оповещения создается так:
Form.Create(nil);
Причем создается один раз и не уничтожается, пока не закроют программу. Так надо!