2010-11-29 22 views
0

エラーが発生した場合、実行を停止するプログラムがあります。実行が停止すると、「開始」ボタンが有効になり、「停止」ボタンが無効になります。プログラムが起動している間( "start"をクリックした後)、 "start"ボタンは無効になります。WindowsフォームC#プログラム:ボタンの状態を確認する方法(有効/無効または表示/非表示)?

私の目標は、間隔(2分)で「開始」ボタンの状態をチェックし、「開始」ボタンが有効になったときにSMTP電子メールを送信するプログラムを書くことです。したがって、プログラムの実行が停止したことを通知します。

FindWindowを使用してプログラムを見つけることができましたが、私のプログラムが使用可能か無効かを区別することはできませんが、ボタンを見つけることができませんでした。

Spy ++を使用すると、ボタンのハンドルは000A0B0Aになります。有効になっているときのボタンのスタイルは54000000です。それは5C000000です。プログラム、またはフォーム/ウィンドウ、ハンドルは00050B2Cです。

私の質問は:もしあれば、その特定のボタン(ハンドル00A0B0A)のスタイルをチェックするために使用できるコマンドは何ですか?

+0

これらのボタンがあなたのコントロールの下にあるプログラムのコードはありますか? –

+0

プログラムを修正する機会があれば、SpeksETCのアドバイスを聞いてください。 – VVS

+0

いいえ、プログラムは私のものではなく、作者はそれを変更したくないです。また、電子メールを送信する機能はありません。 – SeaSharp

答えて

4

あなたのプログラムに観測性を追加して、その状態(実行中、停止中、エラーなど)を監視できるようにするのが一般的に必要なように聞こえます。

将来的に変更される可能性のあるUIに依存しないで、アプリケーションのさまざまな情報を観察したい場合にはさらに拡張可能な、別の(場合によってはより簡単なアプローチ)未来。

代わりに、エラーが発生したときに、プログラムからステータスイベントを発生させるのはなぜですか?これを製品(wcf、リモーティング、イベントビューアへの書き込みなど)から実行し、外部アプリケーションにこれらのイベントの登録を行い、それに応じて行動する(電子メールを送信するなど)ためには、いくつかの方法があります。

あなたのアプローチに問題があり、イベントを発生させるシンプルなwcfサービスを書くのは時間がかかりませんから、最初は少し余分な仕事かもしれませんが私は将来価値があると思います。

+0

私はあなたの回答に完全に同意します。しかし、それは私のプログラムではありません。プログラムの作者はそれを変更したくないので、私が始めたルートです。 – SeaSharp

関連する問題