taoyehui 发表于 2023-12-8 16:22:37

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

如 ControlSend('', '', '',"C:\BD"),时常会执行输入成“C:丨BD" 或者“C;\BD”,不能输入正确的C:\BD,用Send出错概率更高, ControlSend的出错概率还低些。

3131210 发表于 2023-12-8 19:48:03



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


gyp2000 发表于 2023-12-9 00:14:20

应该是键盘输入干扰吧,比如发送指令的时候键盘的SHIFT键被按下,就会导致输入字符变化。
可以在发送字符前 调用函数BlockInput 禁止用户的键盘输入。
然后发送字符。字符发送完成后重新启用用户键盘输入。

zzwwdd 发表于 2023-12-9 06:59:17

我一般都是用   ClipPut('XXX')
                                Send("{CTRLDOWN} v")
                                Sleep('100')
                                Send("{CTRLUP}")
用send 出错概率实在太高了

itzyx 发表于 2023-12-9 14:50:12

这是输入法的干扰。可以设置禁止中文输入:

$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')

bfgxp 发表于 2023-12-9 22:16:21

itzyx 发表于 2023-12-9 14:50
这是输入法的干扰。可以设置禁止中文输入:

一直被中文输入法困扰,感谢提供方法🙏🏻

gyp2000 发表于 2023-12-10 07:50:05

经过测试 ControlSend 不会被输入法状态干扰,也不会被 键盘按键干扰。
楼主遇到的问题,无法复现所以也没办法验证如何解决。
可以尝试修改按键延时,看看能否改善。
Opt("SendKeyDelay", 0)
Opt("SendKeyDownDelay", 0)
页: [1]
查看完整版本: ControlSend模拟输入会出错怎么解决?