#c# #.net #dialog #launching-application #suppress
#c# #.net #диалоговое #запуск-приложение #подавить
Вопрос:
Из моего приложения на C # я запускаю другое приложение, которое перед выполнением иногда показывает диалоговое окно / всплывающее окно с некоторой информацией.
Можно ли подавить или скрыть это диалоговое окно и значок на панели задач диалогового окна?
Редактировать
Возможно ли перехватить вызов функции win32 , которая показала бы это диалоговое окно и, таким образом, предотвратила бы всплывающее окно?
Комментарии:
1. Просто любопытно, что показывает диалоговое / всплывающее окно. Это пробное приложение?
2. Приложения, которые были созданы с намерением быть оцененными таким образом, иногда принимают
-quiet
параметр командной строки или что-то подобное. Другого «нормального» способа подавить диалоговые окна не существует, поскольку они предназначены для всплывающих окон. Однако есть способы, если вы проявляете творческий подход, например, имитировать щелчок мыши по активному приложению через определенное время, но ничего общего.3. @eibhrum: Это «внутреннее» приложение без исходного кода или какой-либо поддержки, и мне это нужно для автоматизации нашего процесса. Но не может быть никакой автоматизации, если кому-то нужно сидеть за компьютером и нажимать на это глупое диалоговое окно.
Ответ №1:
Вы можете найти Windowwindow через PInvoke, а затем отправить сообщение WM_CLOSE или нажать кнопку Отмены или что-то еще.
Комментарии:
1. Нужно ли мне выполнять это в цикле и постоянно проверять, есть ли окно? Или я могу отреагировать на какое-то событие?
2. Вам пришлось бы выполнять это в цикле, да — но если это появляется при запуске программы, у вас есть достаточно небольшое окно времени, чтобы «посмотреть» на окно, поэтому вам не следует выполнять цикл очень долго, если это вызывает беспокойство
Ответ №2:
Почему бы вам не запустить это второе приложение после того, как вы убедитесь, что ваше основное (родительское) приложение полностью запущено и отобразило его окно?
Комментарии:
1. Мое основное приложение просто вызывает несколько других приложений, чтобы сделать некоторые вещи автоматически. Но одно из этих приложений показывает диалоговое окно, которое не позволяет этой автоматизации работать.
2. Так не может ли ваше основное приложение отложить это действие по запуску?? Может быть толчок к загрузке активности в форму. Показан метод события, а не если он в ctor.
3. Что? Я думаю, вы не понимаете, в чем моя проблема.
4. Согласно вашему объяснению, ваше основное приложение напрямую не зависит (тесно связано) от дочерних приложений, чтобы правильно запускать себя? Если это так, не откладывайте это вызывающее действие позже, например, Form. Показанное событие?
Ответ №3:
В большинстве случаев такие приложения предоставляют аргумент «Запуск в фоновом режиме (невидимый)», который вы можете указать при их запуске. Проверьте, есть ли у вас такой аргумент.
Комментарии:
1. @Primoz: Вы должны просмотреть документацию этого приложения «Тихо», «Silent» не будет работать. Иногда для такого параметра может быть true или false. Но вы не можете догадаться об этом, не взглянув на документацию.