首页
论坛
课程
招聘
[原创] 给 PC WX 加个按钮
2020-4-18 18:49 6489

[原创] 给 PC WX 加个按钮

2020-4-18 18:49
6489

PC Wechat 界面加按钮

作者:御风

 

日期:2020年4月18日

 

描述:此方法可快速在微信界面上添加按钮,非 Duilib

 

版本:不限

 

目录

1. 实现效果

 

 

 

2. DLL 注入

DLL 注入的方式可以保证插件与 Wechat.exe 为同一进程,也无需为多开管理烦恼

 

具体的 DLL 注入方法这里不多讲了,教程很多

3. 具体实现

3.1. 插件功能窗口

DLL 注入成功后,创建插件功能窗口

 

窗口创建后先隐藏,任务栏不可视,无边框风格

 

 

然后循环调用 GetModuleHandle("WechatWin.dll") 检测 WechatWin.dll 是否已加载成功,可以设置一个超时时间

 

当检测到 WechatWin.dll 加载完成后,可以 Hook 登录成功的事件

 

在登录成功的时候,等待微信聊天界面(“微信”, “WeChatMainWndForPC”)

 

可以根据自身进程 pid 去获取自身窗口句柄,保证窗口句柄不会取错

 

当微信聊天界面加载完成后:

 

1、对微信聊天界面窗口 SetWindowLong 接管消息

 

2、调用 SetParent 把插件功能窗口嵌入到微信聊天界面窗口

 

SetWindowLong 可以监听到微信聊天界面窗口的点击事件,我们只需要判断一下坐标:

 

 

当监听到 WM_LBUTTONDOWN 消息时,就可以根据点击坐标得到点击的导航按钮索引

 

当监听到 WM_SIZE 消息时,更改插件窗口大小

3.2. 插件导航按钮

如果你有闲心,可以在微信聊天界面窗口的重绘窗口消息中用 GDI 绘制按钮,再根据鼠标移动消息加上热点效果

 

像我这么懒的,选择再嵌入一个按钮窗口:

窗口类名:WeChatPluginBtnForPC
窗口标题:无

这个按钮窗口上,放一个图片控件,用来展示鼠标点击和热点效果

 

窗口结构如下:

 


看雪论坛2020激励机制:能力值、活跃值和雪币体系!会员积分、权限和会员发帖、回帖活跃程度关联!

收藏
点赞2
打赏
分享
最新回复 (9)
雪    币: 279
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
wx_C._647 活跃值 2020-4-18 18:55
2
0
学习了
雪    币: 40
活跃值: 活跃值 (109)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
编程小白 活跃值 2020-4-19 19:21
3
0
来点码啊
雪    币: 200
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_nfcjuzju 活跃值 2020-4-23 13:53
4
0
  小白一个 不怎么懂  但是楼主还是牛X的  
雪    币: 20
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
游公子 活跃值 2020-5-4 00:52
5
0
学习,牛人!!
雪    币: 855
活跃值: 活跃值 (87)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tooi 活跃值 2020-5-13 22:11
6
0
厉害学习了。
雪    币: 234
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
nipc 活跃值 2020-5-14 16:53
7
0
先看了, 牛人!!!
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
wx_丘彬彬 活跃值 2020-6-8 18:44
8
0
厉害!
雪    币: 81
活跃值: 活跃值 (55)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kongfubull 活跃值 2020-6-11 09:58
9
0
思路很骚啊。
雪    币: 197
活跃值: 活跃值 (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
haijie 活跃值 2020-9-7 20:37
10
0
厉害,有代码么?
游客
登录 | 注册 方可回帖
返回