- - PR -
アプリケーションエラーを閉じるバッチの作成方法について
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-03-10 16:18
うーん、ますます解りません。 そういうイメージだとするとユーザーにメリットがあるとは思えないのですけれど。 アプリが出しているエラーダイアログをユーザーがクリックして閉じるのと ダイアログが出るたびに特定のバッチプログラムをユーザーが起動するのと 手間的には全く同じだと思います。 それだったらユーザーが直接閉じた方がプログラムを作成する必要がない分だけ お得だと思いますけれど。
検知するためにはPCが動作している間、もしくは特定のシステムが稼働中は そのツールも動きっぱなしでないと検知できないのでは有りませんか? ユーザーが終了指示するまで常駐して動くようなプログラムをバッチとは言わないと思いますよ。 基本的には動きっぱなしの状態で定期的に表示されているウインドウを検索して 問題になるウインドウが出ていないかとチェックし、出ている場合は表示されている メッセージ等から問題のプログラムに関するものかどうかを判断し、 もし対象のダイアログであればそのウインドウのOKボタンのクリックイベントを起こして 閉じさせると言う流れになるかと思います。 この辺は私自身がVB使いでは無いのではっきりとは言えませんけれど、 Win32APIの関数を使えば、表示中のウインドウを列挙して特定のウインドウを 見つける等言うような事は出来ると思うので同様な事が出来るのではと思います。 .netベースのVBならSystem系のネームスペースにこう言う事ができる物が ないのかなぁ。 ただ、気になるのは既に私が書いている懸念事項に関しては大丈夫なんでしょうか? 単に閉じるだけと言う事になると既に上げているような懸念事項が考えられるとおもうんですが。 | ||||||||
|
投稿日時: 2008-03-10 22:24
返信おそくなりました。
>アプリが出しているエラーダイアログをユーザーがクリックして閉じるのと >ダイアログが出るたびに特定のバッチプログラムをユーザーが起動するのと >手間的には全く同じだと思います。 >それだったらユーザーが直接閉じた方がプログラムを作成する必要がない分だけ >お得だと思いますけれど。 ユーザ様に確認をとりました。今まではエラーが発生したら、 直接閉じていたとのことですが、今後はその手間を省きたいということでした。 特にバッチに拘りがあった訳ではなかったので、ここで教えて頂いた事を 話したところ、実現方法はお任せすると言われました。 >単に閉じるだけと言う事になると既に上げているような懸念事項が考えられるとおもう>んですが。 それから指摘頂いている懸念事項についてですが、閉じても再起動するように なっているとのことなので、そこは気にしないで良いと言われました。 VBも始めて触るので、これから教えて頂いたことについて調べてみたいと思います。 | ||||||||
|
投稿日時: 2008-03-10 22:38
普通は、何が問題なのか、究明します。 「ある常駐のプロセス」が終了しないことが、アプリケーション エラーが発生することとどのように関係するのでしょう?つまり、「ある常駐プロセス」が、アプリケーション エラーとして報告されるのですか?それとも、このプロセスが反応しないことによって、何らかのアプリケーションがエラーになってしまうのですか? 後者ならば、タイムアウトさせるなどの処理で、アプリケーション エラーとならないようにできますよね? 前者であっても、せめてどのタイミングでそういう状態になるのか、調査は必要と思われます。また、メモリやリソースをリークさせていないか、チェックが必要でしょう。あるいは、バッファ オーバー ランをさせていないか、チェックしておく方がよいと思います。 で、ぱておさんが指摘されているように、常駐プログラムにしなければならないと思うのですが、原因となっているのが「常駐のプロセス」ということなので、ミイラ取りがミイラになるような気がしないでもありません。やはり原因究明が必要かと思われます。 | ||||||||
|
投稿日時: 2008-03-11 09:02
Jitta様お返事ありがとうございます。
>普通は、何が問題なのか、究明します。 >「ある常駐のプロセス」が終了しないことが、アプリケーション エラーが発生するこ >ととどのように関係するのでしょう?つまり、「ある常駐プロセス」が、アプリケーシ>ョン エラーとして報告されるのですか?それとも、このプロセスが反応しないことに >よって、何らかのアプリケーションがエラーになってしまうのですか? 「ある常駐プロセス」が、アプリケーション エラーとして報告されるので、 前者です。 発生タイミングの調査等は現在別で行われているところです。 今回の対応はあくまで「暫定対応」であり、原因究明は必要だという ご意見はもっともだと思っています。 | ||||||||
|
投稿日時: 2008-03-11 11:14
どんなエラーダイアログが出ているのか知らないけど、drwtsn を無効にするとか、XP ならエラー報告の設定で解決できるんじゃないですかねえ。
[コントロールパネル] - [システム] - [詳細設定] - [エラー報告] - [プログラムの選択] [次のプログラムのエラーは報告しない] 欄にプログラムを追加。 | ||||||||
|
投稿日時: 2008-03-11 16:20
新規で質問をと思いましたが、関連する質問がありましたので、
ここで質問させて頂きたいです。 VB.netでアプリケーションエラーを発生させるテストプログラムを作ることと なりました。 アプリケーションエラーの内容はメモリの参照エラーです。 エラーをわざと起こすプログラムを作るというのが、難しく苦戦しています。 何か良い方法など御座いましたら、教えて頂けないでしょうか? よろしくお願い致します。 | ||||||||
|
投稿日時: 2008-03-11 18:58
AccessViolationException を Throw するだけではダメで、その状況を作り出さねばなりませんか? だとすれば、アンマネージ コードと対話しない限り起こり得ません。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2008-03-11 20:05
同じスレッドでする話題じゃないね http://bbs.wankuma.com/index.cgi?mode=al2&namber=15345 |