Программно удалить значок уведомления для другой программы - PullRequest
1 голос
/ 02 июля 2010

Я пытаюсь написать приложение-монитор для Dream Daemon, определенного серверного приложения.Поскольку серверное приложение склонно к сбою (в частности, Dream Daemon - это сервер для интерпретируемого кода определенной марки, поэтому интерпретируемый код не работает, оставляя DD на холостом ходу).

Чтобы люди не могли войти в систему вручнуюи перезапускаю устройство несколько раз в день после того, как код, который у нас запущен, вылетает или дает сбой, я пытаюсь установить его там, где автоматический монитор проверит, не вышел ли сервер, а затем закройте и перезапустите программу.Из-за определенного поведения в Dream Daemon я не могу использовать вызов process.Close (), так как DD перехватывает это и просто минимизирует себя в системный трей.Если я обрабатываю. Kill (), я заканчиваю DD, но оставляем значок с уведомлением-сиротой, оставленный показанным.Мне интересно, есть ли способ для меня затем удалить этот значок программно, чтобы моя программа монитора могла очистить после себя.

1 Ответ

1 голос
/ 02 июля 2010

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

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

Здесь статья с примером кода (на C ++, но поскольку она довольно короткая, для этого не должно быть слишком сложно конвертировать ее в C # или аналогичный), если это необходимо.

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