“发送文本到窗口”模块的成功率太低

使用问题 · 1323 次浏览
applack 创建于 2022-11-01 13:28

这几天我需要做一个动作:自动向QQ群发送消息。

这个任务并不难,首先生成调用QQ聊天窗口的协议,然后将聊天窗口置为前台窗口,接着将要发送的消息文本“粘贴”到聊天窗口的输入框,最后模拟快捷键发送和关闭窗口。

其中将聊天窗口置为前台窗口是要费点劲的,因为通过协议调用聊天窗口后,聊天窗口并不一定会直接弹到前台,所以需要迂回一下处理这种异常。

但是将要发送的消息文本“粘贴”到聊天窗口的输入框,这个环节令我很崩溃。

 

最开始完成开发后测试发现,经常丢消息,而且最离谱的是竟然有几次,将我一周以前复制的某些内容粘贴发到了群里(这个问题我至今不得要领)。

发错消息是无法忍受的,由于找不到原因,我只好加入了验证逻辑,就是读取粘贴到聊天窗口输入框的内容后,和原先要发送的内容进行比对,一致再发送,否则删掉重来。

发错消息的问题是解决了,但很遗憾,从窗口控件读取其文本等操作,真的非常慢,通常都需要1~2秒的时间,这个时间不是不可以忍受,但我想改善,所以我就认真地测试了一下 Quicker 的“发送文本到窗口”模块,发现这个模块本身的成功率就不太高,延时参数只要在300ms内,成功概率最高只能到99%左右(这和我本地的电脑或环境有一定关系,但我认为这是依然是普遍现象)。

 

我测试的方法并不复杂:打开记事本,执行100次发送文本到记事本中,每次发送的文本都只有一行,并且都带上顺序号,最后看记事本的行数是否是100行:

某次调试信息:https://temp.getquicker.net/675626/252507145ba74de3bde128766fda4561.htm

 

另外,我试过用模拟键盘输入的方式 CTRL+V,成功率也一样没多大变化。

 

我的问题:“发送文本到窗口”模块的成功率,能不能做到99.999999%?做到可以让开发者忽略掉那极低的失败率,从而不用通过额外的步骤来保证这个环节的成功率?

谢谢。


双鱼6688 2022-11-01 17:50 :

我最近也做了类似的动作,我监控的是微信聊天并使用外部启动quicker自动处理一些动作然后回复微信好友结果,我采用的是开发大大建议的微信机器人,成功率比较高,你找找看有没有QQ机器人之类的。

applack 回复 双鱼6688 2022-11-02 17:00 :

他们做的都太复杂了,因为要照顾到很多很多用户的需求,但我给自己用,所以实现最核心的部分就行。QQ复制粘贴内容的成功率我能做到100%,只不过是稍稍慢了一点,问题不大。

微信我也在搞,微信好像没有像QQ那样的调用协议,好像可以用第三方的推送服务,但我还是自己整吧,直接在窗口控件上模拟鼠标键盘点击。

双鱼6688 回复 applack 2022-11-03 10:35 :

恩恩,能满足自己需求就好。

huanggc66 回复 双鱼6688 2022-11-18 02:12 :

哪里有微信机器人?求推荐

双鱼6688 回复 huanggc66 2022-12-21 16:53 :

我用的是可爱猫微信机器人,收到微信消息后可以运行访问本地API,然后再设置访问API启动的Quicker动作就可以了。

huanggc66 回复 双鱼6688 2022-12-21 16:58 :

谢谢!我已经用千寻框架了,就是 消息的异步处理还没弄好。

回复内容
applack 2022-11-01 13:31
#1

记事本的最终内容:

#0:fc205c3f-d074-4025-bb2d-afa28dc20782@0

#1:fc205c3f-d074-4025-bb2d-afa28dc20782@1

#2:fc205c3f-d074-4025-bb2d-afa28dc20782@2

#3:fc205c3f-d074-4025-bb2d-afa28dc20782@3

#4:fc205c3f-d074-4025-bb2d-afa28dc20782@4

#5:fc205c3f-d074-4025-bb2d-afa28dc20782@5

#6:fc205c3f-d074-4025-bb2d-afa28dc20782@6

#7:fc205c3f-d074-4025-bb2d-afa28dc20782@7

#8:fc205c3f-d074-4025-bb2d-afa28dc20782@8

#9:fc205c3f-d074-4025-bb2d-afa28dc20782@9

#10:fc205c3f-d074-4025-bb2d-afa28dc20782@10

#11:fc205c3f-d074-4025-bb2d-afa28dc20782@11

#12:fc205c3f-d074-4025-bb2d-afa28dc20782@12

#13:fc205c3f-d074-4025-bb2d-afa28dc20782@13

#14:fc205c3f-d074-4025-bb2d-afa28dc20782@14

#15:fc205c3f-d074-4025-bb2d-afa28dc20782@15

#16:fc205c3f-d074-4025-bb2d-afa28dc20782@16

#17:fc205c3f-d074-4025-bb2d-afa28dc20782@17

#18:fc205c3f-d074-4025-bb2d-afa28dc20782@18

#19:fc205c3f-d074-4025-bb2d-afa28dc20782@19

#20:fc205c3f-d074-4025-bb2d-afa28dc20782@20

#21:fc205c3f-d074-4025-bb2d-afa28dc20782@21

#22:fc205c3f-d074-4025-bb2d-afa28dc20782@22

#23:fc205c3f-d074-4025-bb2d-afa28dc20782@23

#24:fc205c3f-d074-4025-bb2d-afa28dc20782@24

#25:fc205c3f-d074-4025-bb2d-afa28dc20782@25

#26:fc205c3f-d074-4025-bb2d-afa28dc20782@26

#27:fc205c3f-d074-4025-bb2d-afa28dc20782@27

#28:fc205c3f-d074-4025-bb2d-afa28dc20782@28

#29:fc205c3f-d074-4025-bb2d-afa28dc20782@29

#30:fc205c3f-d074-4025-bb2d-afa28dc20782@30

#31:fc205c3f-d074-4025-bb2d-afa28dc20782@31

#32:fc205c3f-d074-4025-bb2d-afa28dc20782@32

#33:fc205c3f-d074-4025-bb2d-afa28dc20782@33

#34:fc205c3f-d074-4025-bb2d-afa28dc20782@34

#35:fc205c3f-d074-4025-bb2d-afa28dc20782@35

#36:fc205c3f-d074-4025-bb2d-afa28dc20782@36

#37:fc205c3f-d074-4025-bb2d-afa28dc20782@37

#38:fc205c3f-d074-4025-bb2d-afa28dc20782@38

#39:fc205c3f-d074-4025-bb2d-afa28dc20782@39

#40:fc205c3f-d074-4025-bb2d-afa28dc20782@40

#41:fc205c3f-d074-4025-bb2d-afa28dc20782@41

#42:fc205c3f-d074-4025-bb2d-afa28dc20782@42

#43:fc205c3f-d074-4025-bb2d-afa28dc20782@43

#44:fc205c3f-d074-4025-bb2d-afa28dc20782@44

#45:fc205c3f-d074-4025-bb2d-afa28dc20782@45

#46:fc205c3f-d074-4025-bb2d-afa28dc20782@46

#47:fc205c3f-d074-4025-bb2d-afa28dc20782@47

#48:fc205c3f-d074-4025-bb2d-afa28dc20782@48

#50:fc205c3f-d074-4025-bb2d-afa28dc20782@50

#51:fc205c3f-d074-4025-bb2d-afa28dc20782@51

#52:fc205c3f-d074-4025-bb2d-afa28dc20782@52

#54:fc205c3f-d074-4025-bb2d-afa28dc20782@54

#55:fc205c3f-d074-4025-bb2d-afa28dc20782@55

#56:fc205c3f-d074-4025-bb2d-afa28dc20782@56

#57:fc205c3f-d074-4025-bb2d-afa28dc20782@57

#58:fc205c3f-d074-4025-bb2d-afa28dc20782@58

#59:fc205c3f-d074-4025-bb2d-afa28dc20782@59

#60:fc205c3f-d074-4025-bb2d-afa28dc20782@60

#61:fc205c3f-d074-4025-bb2d-afa28dc20782@61

#62:fc205c3f-d074-4025-bb2d-afa28dc20782@62

#63:fc205c3f-d074-4025-bb2d-afa28dc20782@63

#64:fc205c3f-d074-4025-bb2d-afa28dc20782@64

#65:fc205c3f-d074-4025-bb2d-afa28dc20782@65

#66:fc205c3f-d074-4025-bb2d-afa28dc20782@66

#67:fc205c3f-d074-4025-bb2d-afa28dc20782@67

#68:fc205c3f-d074-4025-bb2d-afa28dc20782@68

#69:fc205c3f-d074-4025-bb2d-afa28dc20782@69

#70:fc205c3f-d074-4025-bb2d-afa28dc20782@70

#71:fc205c3f-d074-4025-bb2d-afa28dc20782@71

#72:fc205c3f-d074-4025-bb2d-afa28dc20782@72

#73:fc205c3f-d074-4025-bb2d-afa28dc20782@73

#74:fc205c3f-d074-4025-bb2d-afa28dc20782@74

#75:fc205c3f-d074-4025-bb2d-afa28dc20782@75

#76:fc205c3f-d074-4025-bb2d-afa28dc20782@76

#77:fc205c3f-d074-4025-bb2d-afa28dc20782@77

#78:fc205c3f-d074-4025-bb2d-afa28dc20782@78

#79:fc205c3f-d074-4025-bb2d-afa28dc20782@79

#80:fc205c3f-d074-4025-bb2d-afa28dc20782@80

#81:fc205c3f-d074-4025-bb2d-afa28dc20782@81

#82:fc205c3f-d074-4025-bb2d-afa28dc20782@82

#83:fc205c3f-d074-4025-bb2d-afa28dc20782@83

#84:fc205c3f-d074-4025-bb2d-afa28dc20782@84

#85:fc205c3f-d074-4025-bb2d-afa28dc20782@85

#86:fc205c3f-d074-4025-bb2d-afa28dc20782@86

#87:fc205c3f-d074-4025-bb2d-afa28dc20782@87

#88:fc205c3f-d074-4025-bb2d-afa28dc20782@88

#89:fc205c3f-d074-4025-bb2d-afa28dc20782@89

#90:fc205c3f-d074-4025-bb2d-afa28dc20782@90

#91:fc205c3f-d074-4025-bb2d-afa28dc20782@91

#92:fc205c3f-d074-4025-bb2d-afa28dc20782@92

#93:fc205c3f-d074-4025-bb2d-afa28dc20782@93

#94:fc205c3f-d074-4025-bb2d-afa28dc20782@94

#95:fc205c3f-d074-4025-bb2d-afa28dc20782@95

#96:fc205c3f-d074-4025-bb2d-afa28dc20782@96

#97:fc205c3f-d074-4025-bb2d-afa28dc20782@97

#98:fc205c3f-d074-4025-bb2d-afa28dc20782@98

#99:fc205c3f-d074-4025-bb2d-afa28dc20782@99


CL 2022-11-01 14:43
#2

剪贴板本身是一个很容易冲突的资源。一方面没法保证每次写剪贴板会成功,另一方面也没有办法保证目标窗口读取剪贴板能够成功。 要想提高成功率,关闭所有其它可能使用到剪贴板的软件和动作,发送后静置400ms以上等对方窗口读取完了再写.

yecc 2022-11-02 10:44
#3

Windows也要背一部分锅,我有时候手动复制了 PDF 里面的文字,第一下 CTRL-V 都没有办法成功粘贴,要第二下才有。

之前自己用的一个涉及到多次粘贴的动作,也是把延时加到200毫秒以上才能正常运行。

剪贴板真的很玄学。

乐昂岚 2022-12-22 10:29
#4

个人建议多添加个延时,可以有效避免冲突,提高容错率

回复主贴