文本指令改进建议

功能建议 · 1114 次浏览
fantasynew 创建于 2021-12-05 15:59

文本指令功能挺不错的,但是执行起来有点慢,能否考虑改用WM消息实现。

我今天特意试了一下,WM消息完成几百个字符的输入只是瞬间。当然用粘贴方式也很快,就是影响到剪贴板了。

winex.say("12345678你好901234567890aaaaaa12345678901234567890gggg12345678901234567890sadfsafasd454sd6a7fs13f46d8a4s5f13s",hwnd)

你看输入这么多字符,还有汉字,就是瞬间

::User32.PostMessageW(hwnd, 0x102/*_WM_CHAR*/, str[i], 0x0001)
::User32.PostMessageW(hwnd, 0x286/*_WM_IME_CHAR*/, str[i], 0x0001)

亲测以上API都可行,包括一些密码框也搞得定


yisqiu 2021-12-05 17:03 :

支持,确实有这个问题,希望改进

CL 2021-12-05 20:46 :

Excel里这个可以用么? 我记得之前测试过,某些情况下会有限制。另外这个似乎要先定位的窗口里有焦点的子控件才行,对于一些特殊窗口,不知道会不会有问题。

fantasynew 2021-12-06 10:09 :

import win.ui;

/*DSG{{*/

var winform = win.form(text="aardio form";right=759;bottom=469)

winform.add()

/*}}*/


import winex

import winex.mouse

var hwnd = winex.findEx(4723566,,"EXCEL\x+","工作簿1")

win.delay(5000)

winex.say("我在Excel里测试了",hwnd)

win.quitMessage()

win.loopMessage();

fantasynew 2021-12-06 10:11 :

我刚刚测试了是没问题的,Excel的控件有点奇怪,模拟鼠标移动是无效的,当你在Excel里输入的时候不就有焦点了?文本指令可以执行的

fantasynew 2021-12-06 10:12 :

文本指令的操作类型少了点,能不能把“执行脚本”加上去?

CL 回复 fantasynew 2021-12-06 10:14 :

脚本可能需要比较多的参数,放在动作里比较合适。 可以创建一个自定义场景,专门放脚本动作。然后在文本指令里触发动作。

fantasynew 2021-12-06 10:14 :

估计Excel里操作控件要上UIAutomation,不是标准Win32

fantasynew 回复 CL 2021-12-06 10:18 :

是这样的,我自己写了个脚本执行器,执行的都是无需参数的简单脚本,自建动作会存在动作命名不清晰或者冗长的情况,时间长了自己都不知道是什么。而执行脚本里我可以清晰看到备注,修改脚本也比较方便

CL 回复 fantasynew 2021-12-06 10:20 :

可以弄一个动作接收脚本内容作为参数。 在文本指令里把脚本内容作为参数传递给动作就可以了。 

fantasynew 回复 CL 2021-12-06 10:38 :

测试此方法可行,自定义脚本无限强大

回复内容
fantasynew 2021-12-05 16:10
#1

还有文本指令能否更进一步,在没有文本框的情况下触发,现在试了都要字符显示了才有作用。

建议可以设置某个引导键,按下该键或者组合键后quicker接收接下来的文本,转换为相应文本指令

_听风_ 2021-12-05 16:51 :

不需要文本框啊,我经常在没有文本框的情况下用来触发一个动作

fantasynew 2021-12-05 17:14 :

可是我怎么试都不行呢

_听风_ 2021-12-05 17:54 :

进q群反馈下吧。今天cl闭关了。

fantasynew 2021-12-05 19:22 :

找了很久,发现是和扩展热键冲突了,一个键不能同时做扩展热键和触发键

fantasynew 2021-12-05 16:12
#2

文本指令的操作类型少了点,能不能把“执行脚本”加上去?

回复主贴