|
ShellHook是什么?当一个窗口创立、激活、封闭时,explorer总是能够捕捉相应的音讯,并更新义务栏上,就是经过ShellHook完成的。本课完成了对零碎一切顶级窗口的拦挡,和指定窗口的拦挡。 RegisterWindowMessage RegisterWindowMessage函数定义一个新的窗口音讯,保障该音讯在零碎范畴内是惟一的。通常调用SendMessage或许PostMessage函数时,能够应用该函数前往的音讯值。 正文: RegisterWindowMessage函数通罕用于为两个协作应用顺序之间的通讯注销音讯。 若两个不同的应用顺序注销了相反的音讯字符串,则这两个应用顺序前往相反的音讯值。该音讯不断维持被注销形态,直到Windows会话完结。当多个应用顺序必需解决同一音讯时才应用RegisterWindowMessage函数。在一个窗口类范畴内发送公有音讯时,获取调配给一个字串标识符的音讯编号 &C000(49152) 到 &FFFF(65535)之间的一个音讯编号。零象征着出错。 https://docs.microsoft.com/en-us ... isterwindowmessagea 字符串罕见有: TaskBarCreated 普通用于Explorer解体后的托盘图标重建 SHELLHOOK 配合RegisterShellHookWindow可用于拦挡零碎窗口创立等 TaskbarButtonCreated 在win7里的义务按钮创立 RegisterShellHookWindow https://docs.microsoft.com/en-us ... stershellhookwindow 开始拦截
- .版本 2
-
- .子程序 开始拦截
-
- MsgNum = RegisterWindowMessage (“SHELLHOOK”)
- .如果真 (MsgNum = 0)
- 信息框 (“注册shell hook 失败”, 0, , )
- 返回 ()
-
- .如果真结束
- RegisterShellHookWindow (取窗口句柄 ())
- ' 窗口子类化
- SetRet = SetWindowLong (取窗口句柄 (), -4, 到整数 (&NewProc))
复制代码
窗口子类化
- .版本 2
- .支持库 iext
-
- .子程序 NewProc, 整数型
- .参数 Hwnd, , , 这个句柄是程序本身的句柄
- .参数 uMsg, , , 用户的消息识别类型
- .参数 wParam, , , 事件类别
- .参数 lParam, , , 拦截的系统的窗口 的句柄
- .局部变量 Tid
- .局部变量 i
-
- ' 只针对某一个特定顶级窗口hook
- .如果真 (lParam = 取指定窗口句柄 (“无标题 - 记事本”))
- .判断开始 (wParam = 1) ' 顶级窗口的创建’
- GetWindowThreadProcessId (lParam, Tid)
- .如果真 (Tid ≠ 0)
- i = 超级列表框1.插入表项 (, “窗口创建”, , , , )
- 超级列表框1.置标题 (i, 1, 到文本 (lParam))
- 超级列表框1.置标题 (i, 2, 到文本 (Tid))
- 超级列表框1.置标题 (i, 3, 到文本 (取指定窗口标题 (lParam)))
- 超级列表框1.保证显示 (i)
-
- .如果真结束
-
- .判断 (wParam = 2) ' 顶级窗口的销毁’
- GetWindowThreadProcessId (lParam, Tid)
- .如果真 (Tid ≠ 0)
- i = 超级列表框1.插入表项 (, “窗口销毁”, , , , )
- 超级列表框1.置标题 (i, 1, 到文本 (lParam))
- 超级列表框1.置标题 (i, 2, 到文本 (Tid))
- 超级列表框1.置标题 (i, 3, 到文本 (取指定窗口标题 (lParam)))
- 超级列表框1.保证显示 (i)
-
- .如果真结束
-
- .判断 (wParam = 32772) ' 顶级窗口切换
- GetWindowThreadProcessId (lParam, Tid)
- .如果真 (Tid ≠ 0)
- i = 超级列表框1.插入表项 (, “窗口切换”, , , , )
- 超级列表框1.置标题 (i, 1, 到文本 (lParam))
- 超级列表框1.置标题 (i, 2, 到文本 (Tid))
- 超级列表框1.置标题 (i, 3, 到文本 (取指定窗口标题 (lParam)))
- 超级列表框1.保证显示 (i)
-
- .如果真结束
-
- .默认
- .判断结束
- .如果真结束
- 返回 (CallWindowProc (SetRet, Hwnd, uMsg, wParam, lParam))
复制代码
|
|