Проверьте, запущен ли процесс с VB.NET (Compact Framework 2.0)
Я работаю над (консольным) приложением, которое должно выполняться при запуске и постоянно работать в фоновом режиме (выполнение чего-либо каждые 30 минут).
Как я могу в другом приложении (устройстве) проверить, запущено ли мое консольное приложение (и запустить его, если его нет)?
я использую VB.NET CF 2.0
и все развертывается на работающем устройстве WM 6.5
Все примеры кода, которые я нашел, доступны только на "стандартном" .NET.
1 ответ
Решение
Существует несколько способов, с помощью которых ваше приложение "мониторинга" может работать (и, конечно, больше, чем я здесь перечисляю).
- Используйте именованный мьютекс (вам придется P/Invoke его). Контролируемое приложение будет создавать и удерживать его, а приложение мониторинга будет периодически проверять, чтобы убедиться, что оно удерживается. Если оно не удерживается, отслеживаемое приложение больше не работает.
- Используйте API-интерфейсы Toolhelp. Попросите приложение мониторинга использовать API-интерфейсы Toolhelp для периодического перечисления запущенных процессов. Если отслеживаемое приложение отсутствует в списке процессов, оно не запущено.
- Используйте именованное событие. Контролируемое приложение будет иметь фоновый поток, который периодически устанавливает именованное (сторожевое) событие. Приложение мониторинга будет ожидать этого события, и если ему не удастся получить событие в определенный промежуток времени, другое приложение либо не будет запущено, либо заблокировано.
- Используйте сокет. У отслеживаемого приложения откройте сокет и прослушайте его. Приложение монитора будет периодически отправлять "ping" наблюдаемому приложению. Контролируемое приложение будет отвечать на пинг с подтверждением. Если приложение мониторинга не получает подтверждения, отслеживаемое приложение либо не запущено, либо заблокировано
- Используйте дескриптор окна. Монитор приложение периодически P / вызывает
GetWindow
изFindWindow
найти постоянно присутствующее окно в контролируемом приложении - часто по тексту формы. Если приложение мониторинга не может найти окно, отслеживаемое приложение не работает.