我正在尝试更轻松地填写一些网络表单。每个表单可能包含100次,在键入一个字母后必须按下该标签才能输入下一个字母到它的相应插槽。我尝试了一些示例,但在将Windows语言设置更改为俄语时遇到了问题。大部分时间我都会输入俄文字母,如果没有,那么就是普通的拉丁字母。
我尝试了以下基本示例,这些示例一次只能处理一个字母,或者同时处理所有(拉丁文)字母。
#UseHook On
w::send ш{Tab}
哪个输出
ш(and one single TAB taking me to the next input)
因此出于某种原因,AHK没有正确输出字符。
我在这里找到的另一个例子,经过一些小修改后,它适用于任何拉丁字母: https://autohotkey.com/board/topic/67948-detect-any-letter-key-press/
Loop 26
Hotkey, % Chr(A_Index+96),LatinLabel ;loop creating hotkeys for a-z
Return
LatinLabel:
Func(A_ThisHotkey)
Return
Func(var) {
#UseHook On
Send %var%{TAB}
}
我读到听所有按键或动作都不理想,因为这也会记录鼠标点击甚至移动。 谷歌没有向我透露其他替代品吗?
答案 0 :(得分:0)
发送Unicode字符时遇到问题吗? 对于欧元符号,我使用以下任何一种:
SendInput {U+20AC}
PostMessage, 0x102, 8364, 1, Edit1, A ;WM_CHAR
答案 1 :(得分:0)
ш
成为ш
的问题是由于脚本文件已另存为UTF-8而没有BOM。您只需要使用BOM将文件另存为UTF-8。 AutoHotkey(自v1.1.30.03版本起)将没有BOM的文件解释为ANSI,因为默认编辑器为记事本,而记事本(Windows 1903之前的版本)默认为ANSI。
第二个脚本通过表达式a
注册热键z
-Chr(A_Index+96)
,该表达式生成拉丁字母。一旦注册,即使您更改了键盘布局,当您按相应的虚拟键时,这些热键也将激活。但是,它们仍然会发送拉丁字母,因为A_ThisHotkey
是a
-z
。
解决方案是使用~
热键修饰符而不是发送热键。在这种情况下,按该键通常会产生应有的效果,然后脚本将发送Tab。
Loop 26
Hotkey % "~" Format("vk{:02x}", A_Index+64), AzKey
return
AzKey:
Send {Tab}
return
这将注册虚拟键vk41-vk5A的热键,这些键对应于包含这些字符的布局上的A-Z,但也可以与其他布局一起使用。但是,可能还有其他一些键会产生“字母”或您要注意的其他字符;例如,在这种情况下,只需根据需要注册其他热键。
Hotkey ~vkC0, AzKey
或堆叠标签
vkC0::
AzKey: