如何使用AutiIt模拟按键,使用英语以外的输入法的AutoIt



我正试图弄清楚如何使用Indic(或任何其他输入法(的默认IME(输入法引擎(来模拟AutoIt的击键。

例如,如果我将键作为Send("a")发送到记事本,我应该使用当前设置的IME在键"a"上获得一个字符。再次,如果我发送密钥M,我应该会收到信件स如果设置了IME印地语/马拉地语和手写体键盘。

目前我收到的是相同的英文字母M,而不是स.

我的Autoit脚本如下

$myvar = "`1234567890-=qwertyuiop[]asdfghjkl;'©zxcvbnm,./"
$charArray = StringSplit($myvar,"",2)
For $char in $charArray
Send( $char & "{ENTER}")
Next

有人能告诉我如何在上面的脚本中实现这一点吗?

我建议使用剪贴板:

  • 调用ClipPut('string with national characters')
  • 然后模拟Ctrl+V-Send('^v')

如果剪贴板不合适(如菜单快捷键或通过列表视图搜索(,请告诉我们您到底想把密钥发送到什么位置-可能有办法。

我终于在Autoit的论坛上找到了这个问题的线索——我如何找到非英语字符的密钥码?,在那里我遇到了DllCall函数调用。

所以现在我有下面的函数调用

DllCall('user32.dll', 'int', 'keybd_event', 'int',$hChar, 'int', 0, 'int', 0, 'ptr', 0)

我可以用所需的密钥代码替换$hChar的值。例如,如果我想键入स使用手写体键盘和天成文书语言,我应该发送0x4D,这是键盘键m的十六进制代码。

要将字符m转换为键代码0x4D,我们必须为所有键盘键编写转换。

我们可以श若我们在调用此函数之前发送{SHIFTDOWN},则使用相同的键代码。

$hChar = "0x4D"
Send("{SHIFTDOWN}")
DllCall('user32.dll', 'int', 'keybd_event', 'int', $hChar, 'int', 0, 'int', 0, 'ptr', 0)
Send("{SHIFTUP}")

(要使用DllCall,我们必须在Autoit脚本中包含WinAPI.au3。(

相关内容

  • 没有找到相关文章

最新更新