Я предполагаю, что приложение киоска запускается как обычное приложение пользовательского интерфейса, а не как служба.
Если это так, я бы написал небольшое приложение-оболочку, которое действительно запускается, и когда оно запускается, оно запускает приложение киоска как отдельный процесс, а затем заходит в цикл, где проверяется здоровье приложения киоска каждые несколько секунд, а затем переходит в режим сна (thread.idle, doevents, все, что нужно).
Вы можете проверить работоспособность приложения киоска, сохранив ссылку на процесс, который был запущен, и проверить, не завершился ли он.
Вы также можете сделать что-то столь же простое, как сделать так, чтобы киоск регулярно обновлял небольшой файл через фоновый рабочий поток. Приложение мониторинга может проверять время обновления этого файла, и, если оно не обновлялось в течение определенного периода времени, можно предположить, что приложение киоска заблокировано, и завершить процесс, который будет перезапущен снова на следующий проход через цикл приложения мониторинга.