精易论坛

标题: SHELLHOOK源码(全局拦截SHELL窗口消息) [打印本页]

作者: cnfull    时间: 2020-1-2 09:57
标题: SHELLHOOK源码(全局拦截SHELL窗口消息)
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
变量名类 型数组备 注
MsgNum整数型  
SetRet整数型  

子程序名返回值类型公开备 注
__启动窗口_创建完毕  
' ShellHook是什么?当一个窗口创建、激活、关闭时,explorer总是能够捕获相应的消息,并更新任务栏上,就是通过ShellHook实现的。本课实现了对系统所有顶级窗口的拦截,和指定窗口的拦截。
' RegisterWindowMessage
' RegisterWindowMessage函数定义一个新的窗口消息,保证该消息在系统范围内是唯一的。通常调用SendMessage或者PostMessage函数时,可以使用该函数返回的消息值。
' 注释:
' RegisterWindowMessage函数通常用于为两个合作应用程序之间的通信登记消息。    若两个不同的应用程序登记了相同的消息字符串,则这两个应用程序返回相同的消息值。该消息一直维持被登记状态,直到Windows会话结束。当多个应用程序必须处理同一消息时才使用RegisterWindowMessage函数。在一个窗口类范围内发送私有消息时,获取分配给一个字串标识符的消息编号 &C000(49152) 到 &FFFF(65535)之间的一个消息编号。零意味着出错。
' https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-registerwindowmessagea
' 字符串常见有:
' TaskBarCreated 一般用于Explorer崩溃后的托盘图标重建
' SHELLHOOK 配合RegisterShellHookWindow可用于拦截系统窗口创建等
' TaskbarButtonCreated 在win7里的任务按钮创建
' RegisterShellHookWindow
' https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-registershellhookwindow
子程序名返回值类型公开备 注
UnShellHook整数型 卸载钩子,失败返回0,成功返回1或非零
参数名类 型参考可空数组备 注
hwnd整数型
返回 (DeregisterShellHookWindow (hwnd))
子程序名返回值类型公开备 注
SetShellHook整数型 安装钩子,失败返回0,成功返回1或非零
参数名类 型参考可空数组备 注
hwnd 
变量名类 型静态数组备 注
ret整数型 
MsgNum = RegisterWindowMessageA (“SHELLHOOK”)
如果真 (MsgNum = 0)
返回 (0)
ret = RegisterShellHookWindow (hwnd)
SetRet = SetWindowLongA (hwnd, -4, 到整数 (&NewProc))
返回 (ret)
子程序名返回值类型公开备 注
NewProc整数型 
参数名类 型参考可空数组备 注
Hwnd这个句柄是程序本身的句柄
uMsg用户的消息识别类型
wParam事件类别
lParam拦截的系统的窗口 的句柄
变量名类 型静态数组备 注
指定句柄整数型 
如果 (uMsg = MsgNum)
调试输出 (“拦截到的窗口的句柄:”, lParam)
' 通过这个句柄可以来对特定的窗口干你需要的事。
判断 (wParam = #HSHELL_WINDOWCREATED )  ' 顶级窗口的创建’
调试输出 (“顶级窗口的创建”)
判断 (wParam = #HSHELL_WINDOWDESTROYED )  ' 顶级窗口的销毁’
调试输出 (“顶级窗口的销毁”)
判断 (wParam = #HSHELL_ACTIVATESHELLWINDOW )  ' SHELL的主窗体将被激活
调试输出 (“SHELL的主窗体将被激活”)
判断 (wParam = #HSHELL_WINDOWACTIVATED )  ' 顶级窗体被激活
调试输出 (“顶级窗体被激活”)
判断 (wParam = #HSHELL_GETMINRECT )  ' 顶级窗体被最大化或最小化
调试输出 (“顶级窗体被最大化或最小化”)
判断 (wParam = #HSHELL_REDRAW )  ' Windows任务栏被刷新
调试输出 (“Windows任务栏被刷新”)
判断 (wParam = #HSHELL_TASKMAN )  ' 任务列表的内容被选中
调试输出 (“任务列表的内容被选中”)
判断 (wParam = #HSHELL_LANGUAGE )  ' 中英文切换或输入法切换
调试输出 (“中英文切换或输入法切换”)
判断 (wParam = #HSHELL_SYSMENU )  ' 显示系统菜单
调试输出 (“显示系统菜单”)
判断 (wParam = #HSHELL_ENDTASK )  ' 顶级窗体被强制关闭
调试输出 (“顶级窗体被强制关闭”)
判断 (wParam = #HSHELL_ACCESSIBILITYSTATE )  ' Windows NT5.0或以上版本有效,指示"可访问性"已被改变.
调试输出 (“可访问性已被改变”)
判断 (wParam = #HSHELL_APPCOMMAND )  ' 没有被程序处理的APPCOMMAND。见WM_APPCOMMAND
调试输出 (“没有被程序处理的APPCOMMAND”)
判断 (wParam = #HSHELL_WINDOWREPLACED )  ' wParam=被替换的顶级窗口的hWnd
调试输出 (“被替换的顶级窗口的hWnd”)
判断 (wParam = #HSHELL_WINDOWREPLACING )  ' wParam=替换顶级窗口的窗口hWnd
调试输出 (“替换顶级窗口的窗口hWnd”)
判断 (wParam = #HSHELL_FLASH )  ' 标题闪烁(HSHELL_REDRAW + HSHELL_HIGHBIT)
调试输出 (“标题闪烁”)
判断 (wParam = #HSHELL_RUDEAPPACTIVATED )  ' 顶级窗口切换:(HSHELL_WINDOWACTIVATED + HSHELL_HIGHBIT)
调试输出 (“顶级窗口切换”)





返回 (CallWindowProcA (SetRet, Hwnd, uMsg, wParam, lParam))
子程序名返回值类型公开备 注
_按钮_安装SHELL钩子_被单击  
SetShellHook (取窗口句柄 ())
子程序名返回值类型公开备 注
_按钮_卸载SHELL钩子_被单击  
UnShellHook (取窗口句柄 ())
常量名称常量值公 开备 注
HSHELL_WINDOWCREATED1 顶级窗体被创建
HSHELL_WINDOWDESTROYED2 顶级窗体即将被关闭
HSHELL_ACTIVATESHELLWINDOW3 SHELL的主窗体将被激活
HSHELL_WINDOWACTIVATED4 顶级窗体被激活
HSHELL_GETMINRECT5 顶级窗体被最大化或最小化(本例未用)
HSHELL_REDRAW6 Windows任务栏被刷新
HSHELL_TASKMAN7 任务列表的内容被选中
HSHELL_LANGUAGE8 中英文切换或输入法切换
HSHELL_SYSMENU9 显示系统菜单
HSHELL_ENDTASK10 顶级窗体被强制关闭
HSHELL_ACCESSIBILITYSTATE11 Windows NT5.0或以上版本有效,指示"可访问性"已被改变.
HSHELL_APPCOMMAND12 没有被程序处理的APPCOMMAND。见WM_APPCOMMAND
HSHELL_WINDOWREPLACED13 wParam=被替换的顶级窗口的hWnd
HSHELL_WINDOWREPLACING14 wParam=替换顶级窗口的窗口hWnd
HSHELL_HIGHBIT32768 掩码:&H8000&
HSHELL_FLASH32774 标题闪烁(HSHELL_REDRAW + HSHELL_HIGHBIT)
HSHELL_RUDEAPPACTIVATED32772 顶级窗口切换:(HSHELL_WINDOWACTIVATED + HSHELL_HIGHBIT)

DLL命令名返回值类型公开备 注
RegisterShellHookWindow整数型 
DLL库文件名:
user32.dll
在DLL库中对应命令名:
RegisterShellHookWindow
参数名类 型传址数组备 注
窗口句柄整数型
DLL命令名返回值类型公开备 注
DeregisterShellHookWindow整数型 
DLL库文件名:
user32.dll
在DLL库中对应命令名:
DeregisterShellHookWindow
参数名类 型传址数组备 注
窗口句柄整数型



i支持库列表   支持库注释   
spec特殊功能支持库
const(未知支持库)

SHELLHOOK.e

735.55 KB, 下载次数: 505, 下载积分: 精币 -2 枚


作者: 易路前行    时间: 2020-1-2 10:17
能拦截到指定窗口的消息?
作者: h2995527    时间: 2020-1-2 10:37
虽然不知道你在说什么...但是感觉很厉害的样子...
作者: tianxi    时间: 2020-1-2 11:44
能拦截VXpc所有消息?
作者: 外星星人    时间: 2020-1-2 13:07
感谢分享,很给力!~
作者: 鱼与飞鸟    时间: 2020-1-2 14:25
能拦截到指定窗口的消息?
作者: onefish    时间: 2020-1-2 15:51
#在这里快速回复#        感谢分享,很给力!~
作者: kyo9766    时间: 2020-1-2 15:52
感谢大佬 普及知识
作者: wjswzj0    时间: 2020-1-2 18:12
感谢分享,很给力!~
作者: zlqjwang    时间: 2020-1-2 23:23
小白表示不明觉厉
作者: 116154801    时间: 2020-1-3 16:58
楼主66666666666666
作者: wuqingg    时间: 2020-1-3 17:10
只回复不下载
作者: 315215    时间: 2020-1-3 22:32
厉害了,我的国
作者: fyh505099    时间: 2020-1-3 23:26
谢谢分享 注释很详细 学习下
作者: Seale    时间: 2020-1-4 10:17
楼主66666666666666
作者: zzh233    时间: 2020-1-4 10:24
请教大神可以举个例子吗 比如这个可以火球属于系统弹框的文本吗
作者: xbp2013    时间: 2020-1-5 08:52
谢谢大神分享   
作者: 老冷    时间: 2020-1-5 16:32
DeregisterShellHookWindow
作者: l7518597    时间: 2020-1-6 14:42
配色很舒服
作者: 完玩    时间: 2020-1-7 11:29
好文章啊
作者: hymm2003    时间: 2020-1-11 23:40
感谢分享、、、
作者: hizdf    时间: 2020-2-18 12:48
支持开源~!感谢分享
作者: vaffy89    时间: 2020-2-19 01:12
支持开源~!感谢分享
作者: jjhx526    时间: 2020-4-9 23:41
666666666666666666666
作者: Delete_rm    时间: 2020-9-10 21:20
支持开源~!感谢分享
作者: asfor78    时间: 2021-4-18 20:57
支持开源~!感谢分享
作者: 大师兄是反派    时间: 2021-4-19 02:30
感谢分享,很给力!~
作者: 2297129548    时间: 2021-4-19 10:21
感谢,看看好用不
作者: qck易语言    时间: 2021-5-9 03:23
这只监控到了,怎么拦截呢
作者: 784326742    时间: 2021-6-17 19:04
本帖最后由 784326742 于 2021-6-17 19:31 编辑

支持支支持会
作者: xu3589    时间: 2021-6-22 17:59
SHELLHOOK SHELLHOOK SHELLHOOK SHELLHOOK
作者: xu3589    时间: 2021-6-22 18:00
SHELLHOOK SHELLHOOK SHELLHOOK SHELLHOOK SHELLHOOK SHELLHOOK SHELLHOOK
作者: muye84    时间: 2022-1-27 20:10
不在任务栏显示的窗口截取不到信息
作者: 不苦小和尚    时间: 2022-4-6 14:50
也能拦截易语言的吧?
作者: aadada    时间: 2022-4-19 03:14
啊是多久啊公司大卡司打开
作者: gay酱    时间: 2022-5-3 10:08

作者: cgh0208    时间: 2022-6-7 19:18
感谢分享
作者: qq65633529    时间: 2022-6-20 12:10
谢谢大佬分享~
作者: 784326742    时间: 2022-8-12 12:41
在任务栏没有图标的窗口取不到真实句柄
作者: 446760810    时间: 2022-9-18 23:12
学习一下
作者: absabs666    时间: 2023-1-14 10:00
666666666666666666666666666666
作者: 股老传奇    时间: 2023-3-12 12:49
666666666666
作者: 心动就行动2    时间: 2023-5-20 07:39
6666666666666 有时候会造成系统任务栏消息无提示的情况
作者: kzf9520    时间: 2024-1-6 12:53
太厉害了
作者: andyfeifei    时间: 2024-7-26 15:51
不错支持一下的哈哈
作者: 614430887    时间: 2024-12-13 15:14
支持开源~!感谢分享
作者: a245770263    时间: 2025-1-9 17:17
支持开源~!感谢分享
作者: a245770263    时间: 2025-1-9 17:17
谢谢大佬分享~




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4