2010-11-29 1 views
0

У меня есть программа, которая при ошибке перестанет работать. Когда он перестает работать, кнопка «Пуск» включена и кнопка «Стоп» отключается. Пока программа запущена (после нажатия кнопки «Пуск») кнопка «Пуск» отключается.Программа Windows Forms C#: как проверить статус кнопки (включено/отключено или видимо/скрыто)?

Моя цель - написать программу, которая через интервал (2 минуты) проверяет статус кнопки «Пуск» и отправляет SMTP-адрес электронной почты, когда кнопка «Старт» становится включенной. Таким образом, давая мне знать, когда программа перестала работать.

Я смог использовать FindWindow, чтобы найти программу, но я не смог найти кнопку, не говоря уже о том, что моя программа дифференцируется и отключена.

Использование Spy ++, ручка кнопки 000A0B0A. Стиль кнопки при ее включении составляет 54000000; отключено 5C000000. Программа, или форма/окно, Handle 00050B2C.

Мой вопрос: какую команду, если таковые имеются, можно использовать для проверки стиля этой конкретной кнопки (Handle 00A0B0A)?

+0

Является ли код программы, в которой эти кнопки находятся под вашим контролем? – 2010-11-29 21:09:39

+0

Если у вас есть возможность изменить программу, послушайте совет SpeksETC. – VVS 2010-11-29 21:26:28

ответ

4

Похоже, что вам, как правило, необходимо добавить наблюдательность в вашу программу, чтобы вы могли контролировать его состояние (работа, остановка, ошибка и т. Д.).

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

Почему бы вам не активировать события статуса из вашей программы при ошибке? Существует несколько способов сделать это из продукта (wcf, удалять, записывать в средство просмотра событий и т. Д.) И регистрировать ваш внешний регистр для этих событий и действовать соответствующим образом (например, отправлять электронную почту)?

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