Я работаю над приложением WPF, где мне нужно знать, является ли мое приложение видимым для пользователя или нет. Я попробовал Application.Current.Activated/Deactivated события, чтобы изменить свойство bool и использовать этот bool для проверки в соответствии с моими требованиями. Все работает отлично, за исключением того, что событие «Деактивировано» вызывается, когда открывается всплывающее окно (например, окно галстука), или я нажимаю на панели задач, поэтому мой bool меняется.Как узнать, видно ли приложение в пользовательском интерфейсе или нет
Что я могу сделать, чтобы проверить, видимо ли мое приложение для пользователя, а не активировано/деактивировано (что проверяет, является ли мое приложение приоритетным или нет)?
Application.Current.Activated += Current_Activated;
Application.Current.Deactivated += Current_Deactivated;
void Current_Deactivated(object sender, EventArgs e)
{
IsActive = false;
}
void Current_Activated(object sender, EventArgs e)
{
IsActive = true;
}
И если! IsActive Я показываю уведомление.
Код публикации никогда не болит, так как он показывает вашу отправную точку – Liath
Зачем вам нужно знать, частично ли отображается ваше окно пользователю, даже если оно неактивно? Чего вы пытаетесь достичь? Окно «Активно» (с клавиатурой/мышью) или нет. Когда вы переключаетесь на другое приложение (даже небольшое всплывающее окно, покрывающее 0,1% вашего окна) или панель задач, ваше окно неактивно *. Окно «Видимое» или полностью невидимое (скрытое/сведенное к минимуму), однако, если вы перемещаете окно далеко, чтобы стать невидимым для вас * (вы не видите ни одного пикселя окна), он по-прежнему «Видимый», потому что Windows не заботится о том, что вы видите *. – Sinatr
@Sinatr Мое приложение похоже на Skype (приложение для мессенджеров). Когда мое приложение не находится на переднем плане, мне нужно показать уведомления, если приходит сообщение. Проблема в том, что приложение не является приоритетным, но все еще видимым для пользователя. Мне не нужно показывать уведомление. – Raj123