再见安打 唐禹哲试听:我的程序能运行吗?vb啊
来源:百度文库 编辑:高考问答 时间:2024/05/13 16:30:57
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Public 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
Public Const GWL_WNDPROC = (-4)
Public Const WM_QUERYENDESSION = &H11
Public PreWinProc As Long
Public m_AllowExit As Boolean
Public Function wndproc(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = WM_QUERYENDESSION And m_AllowExit = False Then
MsgBox "成功!"
Else
wndproc = CallWindowProc(PreWinProc, hWnd, Msg, wParam, lParam)
End If
End Function
==================================================================================================================
Private Sub SubClass(wnd As Long)
Dim ret As Long
PreWinProc = GetWindowLong(wnd, GWL_WNDPROC)
ret = SetWindowLong(wnd, GWL_WNDPROC, AddressOf wndproc)
End Sub
Private Sub EndSubClass(wnd As Long)
Dim ret As Long
ret = SetWindowLong(wnd, GWL_WNDPROC, PreWinProc)
End Sub
Private Sub Command1_Click()
m_AllowExit = False
SubClass Me.hWnd
End Sub
Private Sub Form_Load()
m_AllowExit = True
SubClass Me.hWnd
End Sub
Private Sub Form_Unload(Cancel As Integer)
EndSubClass Me.hWnd
End Sub
wndproc这个函数总是跳不出来啊
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Public 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
Public Const GWL_WNDPROC = (-4)
Public Const WM_QUERYENDESSION = &H11
Public PreWinProc As Long
Public m_AllowExit As Boolean
Public Function wndproc(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = WM_QUERYENDESSION And m_AllowExit = False Then
MsgBox "成功!"
Else
wndproc = CallWindowProc(PreWinProc, hWnd, Msg, wParam, lParam)
End If
End Function
==================================================================================================================
Private Sub SubClass(wnd As Long)
Dim ret As Long
PreWinProc = GetWindowLong(wnd, GWL_WNDPROC)
ret = SetWindowLong(wnd, GWL_WNDPROC, AddressOf wndproc)
End Sub
Private Sub EndSubClass(wnd As Long)
Dim ret As Long
ret = SetWindowLong(wnd, GWL_WNDPROC, PreWinProc)
End Sub
Private Sub Command1_Click()
m_AllowExit = False
SubClass Me.hWnd
End Sub
Private Sub Form_Load()
m_AllowExit = True
SubClass Me.hWnd
End Sub
Private Sub Form_Unload(Cancel As Integer)
EndSubClass Me.hWnd
End Sub
wndproc这个函数总是跳不出来啊
F5