这几天我需要做一个动作:自动向QQ群发送消息。
这个任务并不难,首先生成调用QQ聊天窗口的协议,然后将聊天窗口置为前台窗口,接着将要发送的消息文本“粘贴”到聊天窗口的输入框,最后模拟快捷键发送和关闭窗口。
其中将聊天窗口置为前台窗口是要费点劲的,因为通过协议调用聊天窗口后,聊天窗口并不一定会直接弹到前台,所以需要迂回一下处理这种异常。
但是将要发送的消息文本“粘贴”到聊天窗口的输入框,这个环节令我很崩溃。
最开始完成开发后测试发现,经常丢消息,而且最离谱的是竟然有几次,将我一周以前复制的某些内容粘贴发到了群里(这个问题我至今不得要领)。
发错消息是无法忍受的,由于找不到原因,我只好加入了验证逻辑,就是读取粘贴到聊天窗口输入框的内容后,和原先要发送的内容进行比对,一致再发送,否则删掉重来。
发错消息的问题是解决了,但很遗憾,从窗口控件读取其文本等操作,真的非常慢,通常都需要1~2秒的时间,这个时间不是不可以忍受,但我想改善,所以我就认真地测试了一下 Quicker 的“发送文本到窗口”模块,发现这个模块本身的成功率就不太高,延时参数只要在300ms内,成功概率最高只能到99%左右(这和我本地的电脑或环境有一定关系,但我认为这是依然是普遍现象)。
我测试的方法并不复杂:打开记事本,执行100次发送文本到记事本中,每次发送的文本都只有一行,并且都带上顺序号,最后看记事本的行数是否是100行:
某次调试信息:https://temp.getquicker.net/675626/252507145ba74de3bde128766fda4561.htm
另外,我试过用模拟键盘输入的方式 CTRL+V,成功率也一样没多大变化。
我的问题:“发送文本到窗口”模块的成功率,能不能做到99.999999%?做到可以让开发者忽略掉那极低的失败率,从而不用通过额外的步骤来保证这个环节的成功率?
谢谢。
我最近也做了类似的动作,我监控的是微信聊天并使用外部启动quicker自动处理一些动作然后回复微信好友结果,我采用的是开发大大建议的微信机器人,成功率比较高,你找找看有没有QQ机器人之类的。
他们做的都太复杂了,因为要照顾到很多很多用户的需求,但我给自己用,所以实现最核心的部分就行。QQ复制粘贴内容的成功率我能做到100%,只不过是稍稍慢了一点,问题不大。
微信我也在搞,微信好像没有像QQ那样的调用协议,好像可以用第三方的推送服务,但我还是自己整吧,直接在窗口控件上模拟鼠标键盘点击。
恩恩,能满足自己需求就好。
哪里有微信机器人?求推荐
我用的是可爱猫微信机器人,收到微信消息后可以运行访问本地API,然后再设置访问API启动的Quicker动作就可以了。
谢谢!我已经用千寻框架了,就是 消息的异步处理还没弄好。