2013-03-13 2 views
2

Я написал простое приложение для приложения vC++. То, что я пытаюсь, похоже на службу сторожевого таймера, которая может контролировать, работает ли приложение или нет. Если приложение разбилось, служба должна запустить приложениеwatchdog in vC++ application

Для создания установки через установщик Windows воспользуйтесь только app.exe и app.dll. Возможно ли создать этот сторожевой сервис в самом exe?

К сожалению, я понятия не имею, как написать такую ​​программу, есть ли у кого-нибудь пример кода, который продемонстрировал бы эту технику, пожалуйста?

Если да, то как сделать exe exe и watchdog exe по умолчанию в качестве одного приложения для установки?

+1

HTTP: // MSDN. microsoft.com/en-us/library/windows/desktop/ms687416(v=vs.85).aspx – Abhineet

ответ

0

Такой сторожевой таймер может быть настроен, например, на запись в файл каждую минуту (или что-то еще). Если файл не обновлялся в течение двух или более минут, скорее всего, он является тупиком в приложении, и его необходимо перезапустить.

+0

да мое приложение записывает файл всякий раз, когда есть активность. Но если приложение вылетает с исключительной ошибкой, то как сделать – user1465461

1

Ваш лучший маршрут - создать отдельный сервис, чтобы действовать как сторожевой пес. Технически, возможно иметь сервис и «реальное приложение» в одном и том же исполняемом файле. Вы можете различать их в зависимости от того, как exe был запущен, но это затруднит обслуживание.

Этот article может представлять интерес.

+0

Большое спасибо. если я создаю отдельную услугу, чтобы действовать как сторожевой таймер, то, похоже, мне нужно скрыть как настройку приложения, так и настройку сторожевого таймера? – user1465461

+0

У вас может быть установлена ​​одна установка как для службы, так и для приложения. Какую программу вы будете использовать для создания установщика? – Jaywalker

+0

установка и развертывание visual studio 2008. – user1465461

1

Здесь - http://yadi.sk/d/EtzBRSMi3FqVH - это моя реализация приложения WatchDog, работающего в systray. Не против, что это написано с помощью Qt - основная функциональность - с WinAPI. Это приложение просматривает список процессов для нескольких процессов и перезапускает их, если их не удается найти. Вторая особенность заключается в том, что он контролирует все окна в системе для подозрительного заголовка окна (например, «My Great App» вызывает системную ошибку и будет закрыт. Отправить сообщение разработчикам? ») И, если найти, перезапустит их тоже

PS Я не i18n, но я думаю, что будет никаких проблем)

Update: (согласно @CodyGray комментарий)

Вот ссылки Pastebin в: WatchDog.cpp и WatchDog.h

+0

В целом, пример кода отправки в качестве части вашего ответа намного лучше, чем отправка ссылок на случайные, ненадежные ZIP-файлы. –

+0

@CodyGray Я подумал об этом, но есть около 120 реальных полезных строк: поиск процессов с помощью CreateToolhelp32Snapshot/Process32First/Process32Next', поиск окон с помощью EnumWindows, сравнение оконных заголовков с регулярным выражением и т. Д. Тем не менее, спасибо за критику , Я буду дублировать его на pastebin – borisbn

+0

Спасибо большое, я посмотрю на это – user1465461