2010-01-12 6 views
2

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

+0

всплывающих окон, как антивирусный/Outlook/Win обновления и т.д.? – serhio

+0

Да, также MSN и Winamp всплывающие окна. Практически любое всплывающее приложение стороннего приложения, которое разрушает полноэкранный режим. – user246392

+0

Я не совсем уверен, что вы можете заблокировать все, от фокуса. – alex

ответ

4

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

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

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

+0

согласен на 100%. На самом деле сначала я пропустил вопрос. Вы находитесь в ОС хоста и не должны влиять на другие функции приложения (насколько это возможно), чтобы уважать пользователей вашего приложения. – Tigran

0

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

0

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

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

+4

@tigran: Я считал, что парню нужно * спрятать *, а не * показывать * всплывающие окна ... – serhio

2

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

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

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

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

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

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