2010-11-29 1 views
0

오류가 발생하면 실행이 중지되는 프로그램이 있습니다. 실행이 중지되면 "시작"버튼이 활성화되고 "중지"버튼이 비활성화됩니다. 프로그램이 실행 중일 때 ("시작"을 클릭 한 후) "시작"버튼이 비활성화됩니다.Windows Forms C# 프로그램 : 버튼 상태를 확인하는 방법 (활성화/비활성화 또는 표시/숨김)?

나의 목표는 간격 (2 분)에 "시작"버튼의 상태를 확인하고 "시작"버튼이 활성화되면 SMTP 이메일을 전송하는 것입니다. 따라서 프로그램 실행이 중단 된시기를 알려줍니다.

필자는 FindWindow를 사용하여 프로그램을 찾을 수 있었지만 버튼을 찾을 수 없었습니다.

Spy ++를 사용하면 버튼 핸들이 000A0B0A가됩니다. 단추의 스타일을 활성화하면 54000000입니다. 5C000000입니다. 프로그램 또는 양식/창 핸들은 00050B2C입니다.

내 질문 : 어떤 명령을 사용하여 해당 특정 버튼의 스타일 (Handle 00A0B0A)을 확인할 수 있습니까?

+0

이 단추가 사용자의 제어하에있는 프로그램의 코드는 무엇입니까? –

+0

프로그램을 수정할 기회가 있으면 SpeksETC 조언을 들어보십시오. – VVS

+0

아니요, 프로그램이 제 것이 아니며 작성자가 수정하지 않으려 고합니다. 또한 이메일을 보내는 기능도 없습니다. – SeaSharp

답변

4

일반적으로 프로그램에서 관찰 가능성을 추가하여 상태 (실행 중, 중지됨, 오류 등)를 모니터링 할 수있는 것처럼 들리는 것 같습니다.

나는 미래에 바뀔 수있는 UI에 의존하지 않고 응용 프로그램에 대한 다른 정보를 관찰하고자 할 때 더 확장 할 수있는 다른 (그리고 더 간단한 접근법)을 제안합니다. 미래.

왜 오류가 발생해도 프로그램의 상태 이벤트를 실행하지 마십시오. 제품에서이 작업을 수행하는 여러 가지 다른 방법 (wcf, remoting, 이벤트 뷰어 작성 등)과 외부 응용 프로그램에 이러한 이벤트를 등록하고 이에 따라 조치 (예 : 전자 메일 보내기) 할 수 있습니까?

처음에는 약간의 추가 작업이 될 수 있습니다 (이미 접근법에 문제가있어 확실하지 않지만 이벤트를 발생시키는 간단한 wcf 서비스를 작성하는 데 많은 시간이 걸리지는 않습니다). 나는 미래에 가치가 있다고 생각합니다.

+0

귀하의 답변에 전적으로 동의합니다. 그러나 그것은 내 프로그램이 아닙니다. 이 프로그램의 저자는 그것을 수정하기를 꺼리고, 따라서 나는 시작했다. – SeaSharp