ControlSend模拟输入会出错怎么解决?
如 ControlSend('', '', '',"C:\BD"),时常会执行输入成“C:丨BD" 或者“C;\BD”,不能输入正确的C:\BD,用Send出错概率更高, ControlSend的出错概率还低些。好好看看帮助都不用发帖子
应该是键盘输入干扰吧,比如发送指令的时候键盘的SHIFT键被按下,就会导致输入字符变化。
可以在发送字符前 调用函数BlockInput 禁止用户的键盘输入。
然后发送字符。字符发送完成后重新启用用户键盘输入。 我一般都是用 ClipPut('XXX')
Send("{CTRLDOWN} v")
Sleep('100')
Send("{CTRLUP}")
用send 出错概率实在太高了 这是输入法的干扰。可以设置禁止中文输入:
$handle = WinGetHandle("")
$ret = DllCall("user32.dll", "long", "LoadKeyboardLayout", "str", "08040804", "int", 1 + 0)
DllCall("user32.dll", "ptr", "SendMessage", "hwnd", $handle, "int", 0x50, "int", 1, "int", $ret) ;更改输入法,防止中文输入
ControlSend('','','','C:\BD') itzyx 发表于 2023-12-9 14:50
这是输入法的干扰。可以设置禁止中文输入:
一直被中文输入法困扰,感谢提供方法🙏🏻 经过测试 ControlSend 不会被输入法状态干扰,也不会被 键盘按键干扰。
楼主遇到的问题,无法复现所以也没办法验证如何解决。
可以尝试修改按键延时,看看能否改善。
Opt("SendKeyDelay", 0)
Opt("SendKeyDownDelay", 0)
页:
[1]