В настоящее время я пишу программу на C#, которая в основном функционирует как сторожевой таймер для сторонней программы: если трафик падает ниже определенного значения, процесс уничтожается, а затем перезапускается [с помощью простой taskkill /im
].
Это прекрасно работает, за одним исключением - если программа сведена к минимуму до системного лотка, она не ответит на taskkill /im
, и вам необходимо принудительно завершить ее с помощью taskkill /f /im
.C# control сторонняя программа в системном лотке
Как можно догадаться, это далеко не лучший способ закончить программу. Таким образом, я в настоящее время ищу способ получить доступ к системному лотку Windows и в основном выполнить щелчок по программе/вызвать метод, чтобы максимизировать его до нормального.
Я думал о буквальном моделировании щелчка на лотке, но нашел, что этот метод является способом неточной и непредсказуемой.
Есть ли другой способ сделать это [с помощью системы api, например]?
Спасибо!
Если сторонняя программа не имеет каких-либо закрытых диалоговых окон подтверждения, тогда возможно подключить объект «Процесс» к исполняемому exe, затем вызвать ['CloseMainWindow()'] (https://msdn.microsoft.com /en-us/library/system.diagnostics.process.closemainwindow(v=vs.110).aspx), который из того, что я понимаю, эквивалентен нажатию 'X' в главном окне. – Quantic