プロが教える店舗&オフィスのセキュリティ対策術

現在VB2005にて常駐アプリの開発を行っています。
OSはWindowsXPです。
起動はOS起動時にスタートアップより起動するのですが、
OSのシャットダウン時に常駐アプリが終了していない為、
「このプログラムからの応答がありません(待機、終了、キャンセル)」が表示されます。
この方法を回避するには、シャットダウンを常駐アプリ側で検知してアプリ自身が終了処理をすると思いますが、方法がよくわかっていません。
http://dobon.net/vb/dotnet/system/sessionending. …
↑のURLを参照してみたのですが、シャットダウン時にメッセージの表示はされるのですが、メッセージ表示部をアプリ終了処理に置き換えても、終了処理が行われませんでした。
どなたか、お分かりになる方ご教授いただければと思います。

A 回答 (4件)

クラスの生成で外部アプリを起動ってインスタンスの事です?


Newメソッド内でやってるなら、あまりよろしくないので今後はやめた方がよいかと・・・

それはさておき、外部アプリの終了ですが
恐らく新しいプロセスを生成して実行してると思います。
そのプロセスをkillメソッドでやっつけてやればいけませんか?
oboroxxさんの回答と同じですが。
    • good
    • 1
この回答へのお礼

アドバイスありがとうございます。
プロセスをkillとは、思いつきませんでした。
外部プログラムを強制終了することで、いけそうです。

お礼日時:2010/01/24 17:27

FormのClosingイベントにおいて、引数のFormClosingEventArgsのCloseReasonを調べて、これがWindowsShutdownであれば、外部プログラムを終了させるようにして、自身も終了するようにしてはどうでしょうか。

    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。
外部プログラムだけを終了することは思いつきませんでした。
やってみます。

お礼日時:2010/01/24 17:26

終了処理の記述ありがとうございます。


多分主要な全ソースを出すほうがいいかも。

ちなみにコンソールアプリじゃないですよね?
.NETでwindowsアプリを作ってるなら、シャットダウンでぱつんと落ちる事が殆どだと思う(乱暴だけどそもそも終了処理記述しなくてもよい)んですが、タイマー使ったりスリープ使ったりして待機したり・・・・
ちなみに、こちらで参考サイトのソースをまるごとコピーして、
If MessageBox.Show(s + vbNewLine + "キャンセルしますか?", _
"質問", MessageBoxButtons.YesNo) = DialogResult.Yes Then
'キャンセルする
e.Cancel = True
End If
この部分を
application.exitにしたら
windowsシャットダウンしましたよ。(アプリは消えなかったですが(笑)
他に待機処理が入ったりしてませんか?もしくは外部アプリ実行結果を待ってたり・・・


古いですが、下記が参考になるかも?
http://homepage1.nifty.com/MADIA/vb/vb_bbs2/2006 …

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.ph …

この回答への補足

Unripe01さん、ありがとうございます。
説明不足ですいません。

ご指摘のとおり、外部アプリと連動しています。
簡単に説明をさせていただくと、VBアプリで、外部アプリを起動しています。(クラスの生成で起動)
外部アプリがハードウェアからの情報を受け取り、それをVBアプリで加工して出力しています。
OSシャットダウン時に、外部アプリが起動したままなので、正常に終了しません。
生成したクラスを削除すれば、外部アプリが終了するかと思っていましたが、クラスの削除について、調べているところで、解決には至っていない状態です。

参考URLありがとうございます。
2つとも見つけてはいたのですが、解決には至りませんでした。

補足日時:2010/01/20 19:04
    • good
    • 0

質問です


「アプリ終了処理」
にどのような記述をしているか
サンプルコードをいただければ回答が早いと思います。

宜しくお願いします。

この回答への補足

Unripe01さん、ご指摘ありがとうございます。
終了処理は次の記述だけです。
Application.Exit()

メニューからの【終了】では正常に終了されており、
タスクマネージャーからも終了は確認しています。

全くの初心者で、サンプルコードなどをもとにやっている為、
見当違いなことをやっているかもしれません。

ご教授の程、宜しくお願いします。

補足日時:2010/01/19 23:44
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!