KeepMove.bas
上传用户:albinfu
上传日期:2021-08-24
资源大小:71k
文件大小:2k
源码类别:

杀毒

开发平台:

Visual Basic

  1. Attribute VB_Name = "KeepMove"
  2. Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
  3. Public Const WM_WINDOWPOSCHANGING = &H46
  4. Type WINDOWPOS
  5.         hwnd As Long
  6.         hWndInsertAfter As Long
  7.         X As Long
  8.         Y As Long
  9.         cx As Long
  10.         cy As Long
  11.         flags As Long
  12. End Type
  13. Public PreWindProc2 As Long, MuLimit As Boolean
  14. '===========拦截窗口重定位消息===============
  15. Public Function WndProc2(ByVal hwnd As Long, ByVal Msg As Long, ByVal _
  16. wParam As Long, ByVal lParam As Long) As Long
  17. If MuLimit = True Then
  18. If Msg = WM_WINDOWPOSCHANGING Then
  19. Dim WPOS As WINDOWPOS
  20. CopyMemory WPOS, ByVal lParam, Len(WPOS)
  21. If WPOS.X < 0 Then
  22. Form1.Label1.Caption = Now & " 移动窗口范围超出左侧屏幕,已拦截操作。"
  23. DoEvents
  24. WPOS.X = 0
  25. CopyMemory ByVal lParam, WPOS, Len(WPOS)
  26. ElseIf WPOS.Y < 0 Then
  27. Form1.Label1.Caption = Now & " 移动窗口范围超出屏幕上限,已拦截操作。"
  28. DoEvents
  29. WPOS.Y = 0
  30. CopyMemory ByVal lParam, WPOS, Len(WPOS)
  31. ElseIf WPOS.X > Screen.Width / 15 - Form1.Width / 15 Then
  32. Form1.Label1.Caption = Now & " 移动窗口范围超出右侧屏幕,已拦截操作。"
  33. DoEvents
  34. WPOS.X = Screen.Width / 15 - Form1.Width / 15
  35. CopyMemory ByVal lParam, WPOS, Len(WPOS)
  36. ElseIf WPOS.Y > Screen.Height / 15 - Form1.Height / 15 Then
  37. Form1.Label1.Caption = Now & " 移动窗口范围超出屏幕下限,已拦截操作。"
  38. DoEvents
  39. WPOS.Y = Screen.Height / 15 - Form1.Height / 15
  40. CopyMemory ByVal lParam, WPOS, Len(WPOS)
  41. End If
  42. End If
  43. End If
  44. WndProc2 = CallWindowProc(PreWindProc2, hwnd, Msg, wParam, lParam)
  45. End Function