Как восстановить приложение из системного трея?ShowWindow не помогает, так как дескриптор=0

StackOverflow https://stackoverflow.com/questions/2015689

  •  19-09-2019
  •  | 
  •  

Вопрос

Возможно ли восстановить стороннее приложение, которое было свернуто в системный трей?

Вызов ShowWindow подходит для приложений, свернутых на панели задач, но там, где приложение было свернуто в системный трей, кажется, что его дескриптор обнуляется, и, конечно, ShowWindow не может его найти.

Это было полезно?

Решение 3

Полезный совет от Адама Робинсона и Нобугза.Помогло мне увидеть, что то, к чему мы стремимся, возможно, даже невозможно.Слишком многое зависит от того, как приложение ведет себя внутренне, когда оно скрывает себя, а мы это не контролируем и даже мало знаем об этом.Нам нужно было подойти к этому с другой стороны.

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

Другие советы

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

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

Редактировать

Вы можете попробовать использовать Обозреватель процессов чтобы определить, какие оконные дескрипторы (если таковые имеются) открыты процессом.Это, по крайней мере, подскажет вам, уничтожает ли это окно или скрывает его.

Это полностью зависит от реализации приложения.Гораздо более распространенным подходом было бы создать новое окно с нуля вместо отображения скрытого.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top