1,486
社区成员
发帖
与我相关
我的任务
分享
'窗体Form1代码。
'再添加一个窗体Form2。
Option Explicit
Private Sub Form_Load()
Form2.Show
HookForm Me.hwnd
End Sub
Private Sub Form_Unload(Cancel As Integer)
UnHookForm Me.hwnd
End Sub
'标准模块
Option Explicit
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 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 WM_MOVE = &H3&
Public Const GWL_WNDPROC = -4
Public PrevProc As Long
Public Sub HookForm(F As Long)
PrevProc = SetWindowLong(F, GWL_WNDPROC, AddressOf WindowProc)
End Sub
Public Sub UnHookForm(F As Long)
If PrevProc Then
SetWindowLong F, GWL_WNDPROC, PrevProc
PrevProc = 0
End If
End Sub
Public Function WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If uMsg = WM_MOVE Then
Form2.Move Form1.Left + 3000, Form1.Top + 3000
End If
WindowProc = CallWindowProc(PrevProc, hwnd, uMsg, wParam, lParam)
End Function