0

エラーが発生すると実行が停止するプログラムがあります。実行を停止すると、「開始」ボタンが有効になり、「停止」ボタンが無効になります。プログラムの実行中 (「開始」をクリックした後)、「開始」ボタンは無効になります。

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

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

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

私の質問は次のとおりです。その特定のボタン (ハンドル 00A0B0A) のスタイルを確認するために、どのコマンドを使用できますか?

4

1 に答える 1

4

一般的に必要なのは、プログラムにオブザーバビリティを追加して、その状態 (実行中、停止、エラーなど) を監視できるようにすることです。

将来変更される可能性があり、将来アプリケーションに関するさまざまな情報を観察したい場合に備えて、より拡張可能な UI に依存しない別の (そしておそらくより単純なアプローチ) をお勧めします。

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

最初は少し余分な作業が必要になるかもしれません (ただし、アプローチの問題がすでに発生しており、イベントを発生させる単純な wcf サービスを作成するのにそれほど時間はかからないため、わかりません) が、それだけの価値があると思います。それは将来的に。

于 2010-11-29T21:23:46.333 に答える