電源断時にメッセージ非表示にするには?

解決


BIOPRIN  2004-09-25 09:29:27  No: 85747

常駐ソフト(っぽい動きをするソフト)を終了するときに確認画面を出しています。
・電源を切るとき、ログオフ時は確認画面を非表示にして終了
・ユーザが終了しようとしているとき(手動時)には確認画面をだす
ということは可能なのでしょうか??

よろしくお願いいたします。

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


BIOPRIN  2004-09-25 09:32:17  No: 85748

追加なんですが・・・

自分なりに調べて、windowsが終了するときは"メッセージ"を送ってくるらしいのでそれをキャッチすればいいらしいということがわかっています。
しかし、実際それをどこで、どうすればいいのか、またその方法でいいのかどうかもわかりません。

どうか  よろしくお願いいたします。


raki  URL  2004-09-25 18:22:18  No: 85749

フォームのQueryUnloadイベントプロシージャで判定できます。

例)
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    If (UnloadMode <> vbAppWindows) And (UnloadMode <> vbAppTaskManager) Then
        ' 確認メッセージ表示

        ' 終了キャンセル
        Cancel = True
    End If
End Sub


フォレスト  2004-09-25 18:37:18  No: 85750

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イベントよりも先に実行されます。


BIOPRIN  2004-09-25 23:43:59  No: 85751

rakiさん、フォレストさん
ありがとうございました。
解決できました!!


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加