Закрытие приложения «Панель задач» - PullRequest
4 голосов
/ 06 октября 2010

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

Я могу получить процесс (экземпляр класса Process).Вызов Process.CloseMainWindow () не работает.Вы не получаете Process.MainWindowHandle для процесса панели задач (он равен нулю и задокументировано, что это так), поэтому я не могу отправить, скажем, сообщение WM_SYSCOMMAND, SC_CLOSE.

IМожет убить () это, но это не изящно.Есть идеи?Серверные приложения написаны на Delphi Win32.Я могу изменить их.

Ответы [ 2 ]

2 голосов
/ 06 октября 2010

Вы можете перебирать окна с EnumWindows, чтобы найти скрытое окно, связанное со значком в трее. Это все довольно неуклюже и подвержено ошибкам. Сделайте это аккуратно, пусть эти «серверные приложения» создадут именованный канал. Вы можете подключиться к ним в приложении-менеджере, используя известное имя, а затем отправить им команду. Пространство имен System.IO.Pipes.

2 голосов
/ 06 октября 2010

Вы можете использовать pipe для отправки им сообщений.

...