
現在VB2005にて常駐アプリの開発を行っています。
OSはWindowsXPです。
起動はOS起動時にスタートアップより起動するのですが、
OSのシャットダウン時に常駐アプリが終了していない為、
「このプログラムからの応答がありません(待機、終了、キャンセル)」が表示されます。
この方法を回避するには、シャットダウンを常駐アプリ側で検知してアプリ自身が終了処理をすると思いますが、方法がよくわかっていません。
http://dobon.net/vb/dotnet/system/sessionending. …
↑のURLを参照してみたのですが、シャットダウン時にメッセージの表示はされるのですが、メッセージ表示部をアプリ終了処理に置き換えても、終了処理が行われませんでした。
どなたか、お分かりになる方ご教授いただければと思います。
No.4ベストアンサー
- 回答日時:
クラスの生成で外部アプリを起動ってインスタンスの事です?
Newメソッド内でやってるなら、あまりよろしくないので今後はやめた方がよいかと・・・
それはさておき、外部アプリの終了ですが
恐らく新しいプロセスを生成して実行してると思います。
そのプロセスをkillメソッドでやっつけてやればいけませんか?
oboroxxさんの回答と同じですが。
アドバイスありがとうございます。
プロセスをkillとは、思いつきませんでした。
外部プログラムを強制終了することで、いけそうです。
No.3
- 回答日時:
FormのClosingイベントにおいて、引数のFormClosingEventArgsのCloseReasonを調べて、これがWindowsShutdownであれば、外部プログラムを終了させるようにして、自身も終了するようにしてはどうでしょうか。
No.2
- 回答日時:
終了処理の記述ありがとうございます。
多分主要な全ソースを出すほうがいいかも。
ちなみにコンソールアプリじゃないですよね?
.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つとも見つけてはいたのですが、解決には至りませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PostMessageの連続送信
-
キーボード入力、マウス操作を...
-
VBSで応答不要のメッセージボッ...
-
VBA、UserFormを前面に出力して...
-
ボタンが押された事を検知する...
-
サスペンド(休止やスタンバイ...
-
VBA kernel32 の意味
-
VBSの処理中一旦処理を止めて再...
-
「VBでExcel上PictureBoxダブル...
-
「キャンセル」ボタン付きの処...
-
メッセージボックスのボタン名変更
-
シャットダウン時のExcel強制終...
-
Excel VBA 自動的に閉じるMsgBox
-
VB6 コマンドボタン クリック...
-
【MFC】イベントの無効化について
-
Application.ScreenUpdating=Fa...
-
vb.netでバッチ処理
-
ループを使わずに、特定時間に...
-
終了処理について
-
MFCのワーカースレッドとUIスレ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBSの処理中一旦処理を止めて再...
-
VBA kernel32 の意味
-
メッセージボックスのボタン名変更
-
ACCESS側からEXCELの書式を設定...
-
VBSで応答不要のメッセージボッ...
-
VBA、UserFormを前面に出力して...
-
【C#】 あるイベントから別イ...
-
Excel VBA で処理中断(DoEvents...
-
PostMessageの連続送信
-
ボタンが押された事を検知する...
-
Application.ScreenUpdating=Fa...
-
エクセルVBAでクリップボード内...
-
VB Loopを一時停止し再開あるい...
-
起動後直に実行するコードはど...
-
DirectX環境下での方向キー同時...
-
Excel VBA 実行中に一瞬フリー...
-
OSシャットダウン時の常駐アプ...
-
マウスのクリックを無視したい
-
エクセルVBAで
-
メッセージボックスの表示につ...
おすすめ情報