cfans1993
V2EX  ›  问与答

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

  •  
  •   cfans1993 · Sep 30, 2016 · 8600 views
    This topic created in 3536 days ago, the information mentioned may be changed or developed.

    扯蛋的过程

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

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

    问题

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

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