如何阻止“SendMessage ”

xjbx
博客专家认证
2002-08-13 09:16:58
比如有这样一段代码:
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Public Const WM_CLOSE = &H10



Sub Main()

SendMessage -1, WM_CLOSE, 0, 0

End Sub

呵呵,我如何在我自己写的软件里阻止上面这段程序关掉我的程序呢?
...全文
177 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
gmc007 2002-08-13
  • 打赏
  • 举报
回复
同意楼上
tg123 2002-08-13
  • 打赏
  • 举报
回复
窗体中
Private Sub Form_Load()
HookForm Me
End Sub

Private Sub Form_Unload(Cancel As Integer)
UnHookForm Me
End Sub
穆快中

Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
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_CLOSE=&H10
Public Const GWL_WNDPROC = (-4)
Dim PrevProc As Long
Public Sub HookForm(F As Form)
PrevProc = SetWindowLong(F.hwnd, GWL_WNDPROC, AddressOf WindowProc)
End Sub
Public Sub UnHookForm(F As Form)
SetWindowLong F.hwnd, GWL_WNDPROC, PrevProc
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_CLOSE Then
WindowProc=1
Else
WindowProc = CallWindowProc(PrevProc, hwnd, uMsg, wParam, lParam)
End If
End Function
288794 2002-08-13
  • 打赏
  • 举报
回复
子类化,拦截 WM_CLOSE 消息.

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧