效果未知,谨慎尝试(我试了不行)
Option Explicit
Public Const WM_QUERYENDSESSION = &H11
Public Const GWL_WNDPROC = (-4)
Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public TheProc As Long
Function WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If uMsg = WM_QUERYENDSESSION Then
MsgBox "我不让你关机"
WindowProc = 0
Else
WindowProc = CallWindowProc(TheProc, hwnd, uMsg, wParam, lParam)
End If
End Function
Option Explicit
Private Sub Form_Load()
TheProc = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf WindowProc)
End Sub
Private Sub Form_Unload(Cancel As Integer)
Call SetWindowLong(hwnd, GWL_WNDPROC, TheProc)
End Sub
原创文章,作者:Rosmontics,如若转载,请注明出处:https://rosmontis.com/archives/81