Запретить компоненту открывать всплывающее окно в собственном приложении .NET - PullRequest
0 голосов
/ 09 сентября 2010

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

Ответы [ 2 ]

0 голосов
/ 19 октября 2010

Это пахнет довольно плохо.Почему одна часть вашего приложения пытается помешать другой части?Если компонент, открывающий диалоговое окно, не является компонентом, ориентированным на пользователя, и вы пытаетесь задушить всплывающее окно в пользовательском интерфейсе, то вам нужно немного переделать, чтобы компонент уведомлял пользовательский интерфейс о необходимости ввода имени файла.и пользовательский интерфейс может выбрать, как его получить.Если вы используете компонент для внутреннего использования и он раздражает, то открывает диалоговое окно, тогда звучит так, будто вам нужно настроить этот компонент так, чтобы диалоговое окно зависело от того, используется ли он пользователем, а не службой.

Как и большинство проблем с winapiбудет способ взломать его, отслеживать фокус ваших приложений, перехватывать WM_CHILDACTIVATE или опрашивать окно верхнего уровня - все это может сработать, но все они - хаки, чтобы обойти тот факт, что ваше приложение не соответствует своему дизайну.Если вы сможете исправить дизайн, вы получите более надежное решение, на которое ваши коллеги не будут лезть.

0 голосов
/ 09 сентября 2010

Возможно, немного WndProc и WM_CHILDACTIVATE любви.(Конечно, я предполагаю, что указанный диалог вызовет это.) Возможно, вам придется перейти непосредственно в Win32 WndProc API - см. SetWindowLong - если вам нужно заменить существующий (но тот же процесс) или приложениенасос сообщений высокого уровня.

YMMV.Веселитесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...