微信 pc 版, 怎么用 windows api 操作它的窗口显示/隐藏

2016-09-30 20:22:35 +08:00
 cfans1993

扯蛋的过程

pc 上有一个数据 3 分钟更新一次,我收到更新后把数据发送到指定的微信群. 写的类似按键精灵的玩意儿,功能基本都写好且能运行起来,但微信的窗口并不是每次都显示在最前端. 我操作的过程大概如下:

... // 获取当前活动窗口句柄和鼠标位置

ShowWindow(微信窗口句柄,SW_SHOW); //显示微信窗口,用在最小化系统托盘时唤醒
SetWindowPos(SW_TOPMOST...); //最前端显示
SetForegroundWindow(微信窗口句柄) //让微信窗口获取焦点

... //一些模拟按键和鼠标点击操作

ShowWindow(微信窗口句柄,SW_HIDE); //隐藏微信窗口

...//还原老的活动窗口和鼠标位置

问题

我自己运行时丝般润滑,交接班换另一个人登录微信,问题就会出现.表现为微信窗口并没有显示出来,只看到鼠标在乱点(模拟操作),最后出现一个微信的提示框(忽略所有消息,就是当有微信消息时右击时的提示).在模拟操作中已经加过一些 sleep,防止窗口来不及刷新.但就是想不明白为什么窗口显示不出来?系统为 windows 7 32bit

8060 次点击
所在节点    问与答
12 条回复
sunyang
2016-09-30 20:36:20 +08:00
你干嘛不用按键精灵啊 直接后台绑定窗口
crab
2016-09-30 20:45:13 +08:00
窗口没显示出来应该要循环这个操作吧,你这边少判断了啊,直接去模拟鼠标了。
另外怎么不直接用微信的 web 的协议呢。
abelyao
2016-09-30 20:54:10 +08:00
曾写过一个自动挂 Q 加自动聊天的工具… 一个电脑挂 4 个 Q 互相聊天…
一点小技巧:快捷键比鼠标点击好用,例如 ctrl + alt + w
siknet
2016-09-30 21:17:51 +08:00
直接热键激活窗口不行?
cfans1993
2016-09-30 23:33:12 +08:00
@sunyang 3 分钟的那个数据还要处理过, 为了传递方便就自己写了
cfans1993
2016-09-30 23:35:10 +08:00
@crab 只会 c, web 玩不来, 捂脸
cfans1993
2016-09-30 23:37:18 +08:00
@abelyao 这个好, 本来模拟时也是用 alt+s 来发送的, 看来问题解决了
magicjerry
2016-12-20 23:30:32 +08:00
@cfans1993
请问你是如何通过 Windows API 打开指定单个微信好友窗口的?否则可以交流一下心得?
cfans1993
2016-12-21 00:23:36 +08:00
@magicjerry 没有调用专门的 api 。我刚开始是用获取桌面图像缓冲区,取关键像素作匹配的方法来搜索指定聊天群。因为群图像会改变加上位置有时候太靠后,后来就直接顶置聊天群。可以去翻翻 github,好像有 python 版本直接调用微信 api 的
cfans1993
2016-12-30 12:45:35 +08:00
@magicjerry python 版已经有现成的工具了,昨天下载用了下挺好用的
推荐试试这个: https://github.com/littlecodersh/itchat
sdlearn
2017-07-29 15:08:52 +08:00
楼主怎么获取窗口句柄的,我主窗口局部可以获取到,里面的子窗口句柄貌似获取不到呢
cfans1993
2017-07-29 22:23:11 +08:00
@sdlearn 用 windows 系统 api 没折腾成功,总会出现异常
最后用了别人的 python 版微信机器人,挺好用的,地址如下:
https://github.com/littlecodersh/itchat

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/310059

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX