V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
cfans1993
V2EX  ›  问与答

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

  •  
  •   cfans1993 · 2016-09-30 20:22:35 +08:00 · 8052 次点击
    这是一个创建于 2967 天前的主题,其中的信息可能已经有所发展或是发生改变。

    扯蛋的过程

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

    ... // 获取当前活动窗口句柄和鼠标位置
    
    ShowWindow(微信窗口句柄,SW_SHOW); //显示微信窗口,用在最小化系统托盘时唤醒
    SetWindowPos(SW_TOPMOST...); //最前端显示
    SetForegroundWindow(微信窗口句柄) //让微信窗口获取焦点
    
    ... //一些模拟按键和鼠标点击操作
    
    ShowWindow(微信窗口句柄,SW_HIDE); //隐藏微信窗口
    
    ...//还原老的活动窗口和鼠标位置
    

    问题

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

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