Как мы можем предотвратить появление всплывающих окон в верхней части приложения? - PullRequest
2 голосов
/ 12 января 2010

У меня полноэкранное окно, и я хочу предотвратить появление всплывающих окон в правом нижнем углу экрана. Я установил для свойства Topmost значение true, но, видимо, это не помогает. Я также попытался активировать форму и выделить ее, как только она деактивировалась, но это тоже не помогло. Как можно игнорировать такие окна, пока пользователь работает с полноэкранным приложением? Я программирую на .NET на C #.

Ответы [ 4 ]

5 голосов
/ 12 января 2010

Вы не можете сделать это, это не проходит тест «что, если две программы попытались сделать это»:

  1. эти всплывающие окна - обычные окна, подобные вашим, они также используют тот же самый верхний стиль, который вы используете.
  2. если бы был способ всегда быть выше других верхних окон, они бы тоже использовали его, делая его бесполезным (поскольку авторы других приложений так же обеспокоены тем, что пользователь пропускает свои «супер важные» уведомления, так же, как и вы они мешают вашему полноэкранному приложению).

Вы можете попробовать использовать грязные трюки, чтобы заставить ваше окно подняться к вершине самого верхнего z-порядка, но эти всплывающие окна, вероятно, будут использовать точно такие же трюки, снова делая все это бесполезным (и в качестве дополнительного бонуса все эти грязные уловки могут превратить ваше приложение в кошмар совместимости).

2 голосов
/ 12 января 2010

Вы можете отключить эти всплывающие уведомления, выполнив следующие действия:

  1. Нажмите Пуск, Выполнить и введите regedit
  2. Перейдите к следующему подразделу:

    HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Advanced

  3. На правой панели создайте DWORD значение с именем EnableBalloonTips

  4. Дважды щелкните новую запись и присвойте ей значение 0 .
  5. Выйти из редактора реестра.
  6. Выйдите из Windows (это не очень круто ...), а затем снова войдите в систему, чтобы изменения вступили в силу.

если вам нужна помощь в том, как это сделать программой, не стесняйтесь спрашивать;)

0 голосов
/ 12 января 2010

В моем личном проекте я использовал всплывающий элемент управления sys tray SvnRadar , написанный на WPF.

Контроль находится на http://www.hardcodet.net/projects/wpf-notifyicon, написанном Филиппом Суми. Очень приятно. Единственное, что вам нужно будет «отсоединить» его от экранных координат SysTray и сделать так, чтобы вы появлялись там, где хотите. Надеюсь, поможет. Удачи.

0 голосов
/ 12 января 2010

Я не думаю, что вы можете заблокировать все всплывающие окна, окна могут не позволить вам сделать это. Но вы можете попробовать с функцией SetWindowPos и передать ей параметр HWND_TOP. Это может работать немного лучше, чем Topmost = true.

...