- - PR -
APL強制終了時のイベントの発生について
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-09-25 17:57
どなたかご教授ください。
VB6.0 でAPLを開発しています。 このAPLを終了する際(End の前)に、ある終了ロジックを呼び出し処理する必要があります。 正常、異常を問わず終了(終了のイベント)時にはこれを実現できるのですが、タスクマネージャなどで外部から強制終了した場合にも同様な処置を施す必要があります。 色々なイベントでテストして見たのですが解決に至っていません。 そもそも、強制終了時にAPLでハンドリングできるイベントは発生するのでしょうか? 発生するのであれば実現可能であると思っています。また他に良い方法がありましたら合わせて教えていただけますでしょうか。 よろしくお願いいたします。 | ||||||||
|
投稿日時: 2007-09-25 18:06
QueryUnloadイベントのUnloadModeで判断できるのではないでしょうか。
| ||||||||
|
投稿日時: 2007-09-25 18:23
強制終了ですか。 プロセスが Kill されるような場合は無理でしょうね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2007-09-25 18:51
ですね。 UnixならSignalがあるんですが、Windowsには同等の機能がありません。 どうしても確実に終了処理を行う必要があるなら、別プロセスから監視して、別プロセスで終了処理を行う以外にないはずです。 あるいは一般ユーザーから強制終了させられないように、サービスとして動作させた上で、ユーザ権限の管理をしっかりするかですね。 #終了処理なしで強制終了されても大丈夫なように設計するのが基本です。 | ||||||||
|
投稿日時: 2007-09-25 19:57
半分興味で伺うのですが、この "ある終了ロジック" についてどういったロジックなのか教えて頂きませんでしょうか? 必要となるシナリオが想像できませんでした。 たとえばリソース関係だったらプロセスが死んでいる時点で無意味なことこの上ないですから。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2007-09-25 20:09
投稿者です。
みなさま、早急なご回答ありがとうございました。 J.J. さんから頂いた、「QueryUnloadイベントのUnloadModeで判断」については、テストAPLでは問題なかったです。ただ、システムでは、引き継いだ事を言い訳にして...どうしてもイベントがハンドリングできませんでした。 画面を同時に数多く使用しており、それらをモーダルやハイドなどで切り替えているためなのか? すべての画面の「QueryUnloadイベント」にコーディングしてもダメなのです。 タスクマネージャに表示されているアプリケーションの実態が何だか分からない状況になってきました。 甕星 さんからの設計思想なのですが...言い訳です。特殊な?キーボード(ハード)を制御するためのソフトAを某メーカーから購入して使用しています。このソフトがちょくちょく使用不可のエラーとなり、APL自体を強制終了せざるを得ない事態になっています。 この時、この状態のままAPLを再起動しても、中途半端な状態でソフトAが終了していることを何処かで握ったままになっているのか、APL全体が使用不能になりリブートしかない状況になっているのです。 これを打破するために、強制終了時にその一歩手前で、ソフトAを正常に終了させてから(方法はあります)APLを終わらせる方法を探しておりました。彷徨い続けます... 皆様、ありがとうございました。 | ||||||||
|
投稿日時: 2007-09-25 20:15
投稿者です。
じゃんぬねっと さんからの "ある終了ロジック" とは、前出の「ソフトA」を正常に終了させるプロシージャのことになります。APLを終了する際には(正常でも異常でも)、このプロシージャを必要としている様です。(某メーカーより) | ||||||||
|
投稿日時: 2007-09-26 00:01
私のはある程度単純なものを想像してましたので、おっしゃっている状況ではあまり役に立てないかもしれません。
で、以下は予想。 ソフトAのプロセスを格納する変数を、グローバルな形で保持しているような印象を受けました。 本来ならそういう設計自体があまりよろしくないのですが、いろんな事情によりそれも難しいのでしょう。 複数の画面を使用しているとのことですので、可能であれば基となる画面の終了時にそういった処理を纏めるのが一番かと思います。 |