找回密码
 加入
搜索
查看: 114|回复: 6

ControlSend模拟输入会出错怎么解决?

[复制链接]
发表于 2023-12-8 16:22:37 | 显示全部楼层 |阅读模式
如 ControlSend('', '', '',"C:\BD"),时常会执行输入成“C:BD" 或者“C\BD”,不能输入正确的C:\BD,用Send出错概率更高, ControlSend的出错概率还低些。
发表于 2023-12-8 19:48:03 | 显示全部楼层


好好看看帮助都不用发帖子


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2023-12-9 00:14:20 | 显示全部楼层
应该是键盘输入干扰吧,比如发送指令的时候键盘的SHIFT键被按下,就会导致输入字符变化。
可以在发送字符前 调用函数BlockInput 禁止用户的键盘输入。
然后发送字符。字符发送完成后重新启用用户键盘输入。
发表于 2023-12-9 06:59:17 | 显示全部楼层
我一般都是用     ClipPut('XXX')
                                Send("{CTRLDOWN} v")
                                Sleep('100')
                                Send("{CTRLUP}")
用send 出错概率实在太高了
发表于 2023-12-9 14:50:12 | 显示全部楼层
这是输入法的干扰。可以设置禁止中文输入:
$handle = WinGetHandle("[ACTIVE]")
$ret = DllCall("user32.dll", "long", "LoadKeyboardLayout", "str", "08040804", "int", 1 + 0)
DllCall("user32.dll", "ptr", "SendMessage", "hwnd", $handle, "int", 0x50, "int", 1, "int", $ret[0]) ;更改输入法,防止中文输入
ControlSend('','','','C:\BD')
发表于 2023-12-9 22:16:21 | 显示全部楼层
itzyx 发表于 2023-12-9 14:50
这是输入法的干扰。可以设置禁止中文输入:

一直被中文输入法困扰,感谢提供方法🙏🏻
发表于 2023-12-10 07:50:05 | 显示全部楼层
经过测试 ControlSend 不会被输入法状态干扰,也不会被 键盘按键干扰。
楼主遇到的问题,无法复现所以也没办法验证如何解决。
可以尝试修改按键延时,看看能否改善。
Opt("SendKeyDelay", 0)
Opt("SendKeyDownDelay", 0)
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-3-4 22:44 , Processed in 0.076326 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表