常駐ソフト(っぽい動きをするソフト)を終了するときに確認画面を出しています。
・電源を切るとき、ログオフ時は確認画面を非表示にして終了
・ユーザが終了しようとしているとき(手動時)には確認画面をだす
ということは可能なのでしょうか??
よろしくお願いいたします。
VB6SP6/XPproSP2
以下、終了部の処理-----------------
'終了しようとしたとき
Private Sub Form_Unload(Cancel As Integer)
Dim intRet As String
intRet = MsgBox("終了しますか?", vbQuestion + vbYesNo, "終了確認")
If intRet = 6 Then
'終了処理
Else
Cancel = 1
Exit Sub
End If
End Sub
追加なんですが・・・
自分なりに調べて、windowsが終了するときは"メッセージ"を送ってくるらしいのでそれをキャッチすればいいらしいということがわかっています。
しかし、実際それをどこで、どうすればいいのか、またその方法でいいのかどうかもわかりません。
どうか よろしくお願いいたします。
フォームのQueryUnloadイベントプロシージャで判定できます。
例)
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
If (UnloadMode <> vbAppWindows) And (UnloadMode <> vbAppTaskManager) Then
' 確認メッセージ表示
' 終了キャンセル
Cancel = True
End If
End Sub
rakiさんがおっしゃるとおり、やはりQueryUnloadが一番簡単かと。
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Select Case UnloadMode
Case 0
'閉じるボタンがクリックされた
Case 1
'コード内でUnloadステートメントが実行された
Dim intRet As Integer
intRet = MsgBox("終了しますか?", vbQuestion + vbYesNo, "終了確認")
If intRet = 6 Then
'終了処理
Else
Cancel = 1
Exit Sub
End If
Case 2
'Windowsセッションの終了
Case 3
'タスクマネージャによって終了
Case 4
'MDIフォームが閉じられたためMDI子フォームの終了
Case 5
'オーナーが閉じられているためフォームが閉じられる
End Select
End Sub
Unloadステートメントが実行されたとき以外は、確認画面が出ません。
※動作確認済
ちなみにQueryUnloadは、Unloadイベントよりも先に実行されます。
rakiさん、フォレストさん
ありがとうございました。
解決できました!!
ツイート | ![]() |