以下是引用yuma在2022-9-21 17:48:24的发言:
重启、注销、关机 发的都是相同的消息。
重启、注销、关机 发的都是相同的消息。
Msg相同,wParam区分
Private Declare Function SetProcessShutdownParameters Lib "kernel32" (ByVal dwLevel As Long, ByVal dwFlags As Long) As Long Private Sub Form_Load() Call SetProcessShutdownParameters(1279, 0&) '&H4FF = 1279,即本程序被系统最先通知关闭以便触发Form_QueryUnload事件,这样才能最先发现电脑关机、重启、注销事件 End Sub Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) If UnloadMode = vbAppWindows Then Cancel = 1 '该语句能让系统不能顺利关机、重启、注销,这样你才有机会反悔并看到后面的对话框。 MsgBox "检测到你的电脑正在准备关机、重启、注销!" End If End Sub