贝斯得7寸监控:我的程序能运行吗?vb啊

来源:百度文库 编辑:高校问答 时间:2024/05/09 04:51:28
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这个函数总是跳不出来啊

F5