文本指令功能挺不错的,但是执行起来有点慢,能否考虑改用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都可行,包括一些密码框也搞得定
不需要文本框啊,我经常在没有文本框的情况下用来触发一个动作
可是我怎么试都不行呢
进q群反馈下吧。今天cl闭关了。
找了很久,发现是和扩展热键冲突了,一个键不能同时做扩展热键和触发键
支持,确实有这个问题,希望改进
Excel里这个可以用么? 我记得之前测试过,某些情况下会有限制。另外这个似乎要先定位的窗口里有焦点的子控件才行,对于一些特殊窗口,不知道会不会有问题。
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();
我刚刚测试了是没问题的,Excel的控件有点奇怪,模拟鼠标移动是无效的,当你在Excel里输入的时候不就有焦点了?文本指令可以执行的
文本指令的操作类型少了点,能不能把“执行脚本”加上去?
脚本可能需要比较多的参数,放在动作里比较合适。 可以创建一个自定义场景,专门放脚本动作。然后在文本指令里触发动作。
估计Excel里操作控件要上UIAutomation,不是标准Win32
是这样的,我自己写了个脚本执行器,执行的都是无需参数的简单脚本,自建动作会存在动作命名不清晰或者冗长的情况,时间长了自己都不知道是什么。而执行脚本里我可以清晰看到备注,修改脚本也比较方便
可以弄一个动作接收脚本内容作为参数。 在文本指令里把脚本内容作为参数传递给动作就可以了。
测试此方法可行,自定义脚本无限强大