来自:zip11 > 馆藏分类
配色: 字号:
AutoHotkey按键
2017-04-28 | 阅:  转:  |  分享 
  
Send/SendRaw/SendInput/SendPlay/SendEvent:发送按键和点击

发送模拟键击和鼠标点击到活动窗口。

SendKeys

SendRawKeys

SendInputKeys

SendPlayKeys

SendEventKeys

参数



要发送的按键序列.和其他命令一样,在首个参数前的逗号可以省略.

原始模式:SendRaw命令会原样发送所有字符,而不把{Enter}转换成ENTER键击,把^c转换成Control-C,等等.不过,转义系列,变量引用和表达式的一般规则仍然适用,因为它们在命令执行前就已经被处理了.要在SendInput、SendPlay或SendEvent中使用原始模式,请把{Raw}写在需发送的按键序列前面;例如:SendInput{Raw}abc。

普通模式:不处于原始模式时,下列字符被看成是修饰键(这些修饰键仅影响紧跟着的下一个键):

!:发送ALT键击.例如,SendThisistext!a将发送按键序列“Thisistext”并接着按下ALT+a。注:在某些程序中!A和!a会产生不同的效果.这是由于!A按了ALT+SHIFT+A而!a按了ALT+a.如果不确定,请使用小写字母.

+:发送SHIFT键击.例如,Send+abC会发送文本“AbC”,而Send!+a会按下ALT+SHIFT+a。

^:发送CONTROL键击.例如,Send^!a会按下CTRL+ALT+a,而Send^{Home}则发送CONTROL+HOME。注:在某些程序中^A和^a会产生不同的效果.这是由于^A按了CONTROL+SHIFT+A而^a按了CONTROL+a.如果不确定,请使用小写字母.

#:发送WIN键击,因此Send#e会在按住Windows键时按下字母“e”。

SendInput和SendPlay[v1.0.43+]:SendInput和SendPlay与Send使用相同的语法但通常更快更可靠.此外,它们缓存了发送期间任何物理的键盘或鼠标活动,这样避免了在发送时夹杂用户的键击.可以使用SendMode让Send和SendInput或SendPlay执行相同的功能.关于每种模式的更多细节,请参阅下面的SendInput和SendPlay.

SendEvent[v1.0.43+]:SendEvent和1.0.43之前版本的Send命令使用相同的方法发送键击.键击发送的频率由SetKeyDelay决定.默认情况下,Send和SendEvent功能相同;但通过SendMode可以让它变成和SendInput或SendPlay一样.

KeyNames:下表中列出了可以发送的特殊按键(每个按键名称必须用大括号包围):

按键名称 生成的键击 {F1}-{F24} 功能键.例如:{F12}表示F12键. {!} ! {#} # {+} + {^} ^ {{} { {}} } {Enter} 主键盘上的ENTER键 {Escape}或{Esc} ESCAPE {Space} SPACE(仅对于要发送的按键序列开始或末尾的空格才需要这样表示,而序列中间的空格是原义的) {Tab} TAB {Backspace}或{BS} 退格键 {Delete}或{Del} Delete {Insert}或{Ins} Insert {Up} 主键盘上的向上键 {Down} 主键盘上的向下键 {Left} 主键盘上的向左键 {Right} 主键盘上的向右键 {Home} 主键盘上的Home键 {End} 主键盘上的End键 {PgUp} 主键盘上的向上翻页键 {PgDn} 主键盘上的向下翻页键 ? ? {CapsLock} CapsLock(在2k/XP中使用SetCapsLockState更可靠)。发送{CapsLock}之前可能要求SetStoreCapslockModeOff. {ScrollLock} ScrollLock(另请参阅:SetScrollLockState) {NumLock} NumLock(另请参阅:SetNumLockState) ? ? {Control}或{Ctrl} CONTROL(技术信息:发送中性的虚拟按键代码和左边的扫描码,即在vkXXscYYY中,XX为中性的而YYY为左边的扫描码) {LControl}或{LCtrl} 左CONTROL键(技术信息:发送左边的虚拟按键而非中性的那个) {RControl}或{RCtrl} 右CONTROL键 {ControlDown}或{CtrlDown} 按住CONTROL键直到发送{CtrlUp}.要按住左边或右边的键,请使用{RCtrlDown}和{RCtrlUp}。 ? ? {Alt} ALT(技术信息:发送中性的虚拟按键和左边的扫描码) {LAlt} 左ALT键(技术信息:发送左边的虚拟按键而不是中性的那个) {RAlt} 右ALT键(或AltGr,取决于键盘布局) {AltDown} 按住ALT键直到发送{AltUp}.要按住左边或右边的键,请使用{RAltDown}和{RAltUp}。 ? ? {Shift} SHIFT(技术信息:发送中性的虚拟按键和左边的扫描码) {LShift} 左SHIFT键(技术信息:发送左边的虚拟按键而不是中性的那个) {RShift} 右SHIFT键 {ShiftDown} 按住SHIFT键直到发送{ShiftUp}.要按住左边或右边的键,请使用{RShiftDown}和{RShiftUp}。 ? ? {LWin} 左Windows键 {RWin} 右Windows键 {LWinDown} 按住左Windows键直到发送{LWinUp} {RWinDown} 按住右Windows键直到发送{RWinUp} ? ? {AppsKey} WindowsAppskey(调用右键点击或上下文菜单) {Sleep} 电脑SLEEP键. {ASCnnnnn} 发送ALT+nnnnn小键盘上的按键组合,可以用来生成键盘上不存在的特殊字符.要生成ASCII字符,请指定一个介于1和255之间的数字.要生成ANSI字符(在大多数语言中的标准),请指定一个介于128和255之间的数字,但需要在数字前加上一个前导零,例如{Asc0133}.

要生成Unicode字符,请指定一个介于256和65535之间的数字(不带前导零).但是,有些应用程序不支持这种方法.对于替代方法,请参阅下面的部分. {U+nnnn} [AHK_L24+]:发送Unicode字符,其中nnnn为不包括0x前缀的字符的十六进制值.在AutoHotkey的Unicode版本中通常不需要这么做,因为它包含的Send和ControlSend自动支持Unicode文本.

如果这个字符没有映射为一个虚拟按键代码,则使用SendInput()或WM_CHAR发送这个字符而当前的发送模式无效. {vkXX}{scYYY}{vkXXscYYY} 发送一个虚拟按键为XX且扫描码为YYY的键击.例如:Send{vkFFsc159}。如果省略了sc或vk部分,则会发送最适当的值.

XX和YYY是十六进制值,通常可以在主窗口的View->Keyhistory菜单项找到.另请参阅:特殊按键 ? ? {Numpad0}-{Numpad9} 小键盘上的数字键(与Numlock打开时输入的一样).例如:{Numpad5}为数字5. {NumpadDot} 小键盘上的点(与Numlock打开时输入的一样). {NumpadEnter} 小键盘上的Enter键 {NumpadMult} 小键盘上的乘 {NumpadDiv} 小键盘上的除 {NumpadAdd} 小键盘上的加 {NumpadSub} 小键盘上的减 ? ? {NumpadDel} 小键盘上的Delete键(此键和后面的小键盘按键是在Numlock关闭时输入的) {NumpadIns} 小键盘上的Insert键 {NumpadClear} 小键盘上的Clear键(通常在Numlock关闭时输入''5''的键). {NumpadUp} 小键盘上的向上键 {NumpadDown} 小键盘上的向下键 {NumpadLeft} 小键盘上的向左键 {NumpadRight} 小键盘上的向右键 {NumpadHome} 小键盘上的Home键 {NumpadEnd} 小键盘上的End键 {NumpadPgUp} 小键盘上的向上翻页键 {NumpadPgDn} 小键盘上的向下翻页键 ? ? {Browser_Back} 按下浏览器的“后退”按钮 {Browser_Forward} 按下浏览器的“前进”按钮 {Browser_Refresh} 按下浏览器的“刷新”按钮 {Browser_Stop} 按下浏览器的“停止”按钮 {Browser_Search} 按下浏览器的“搜索”按钮 {Browser_Favorites} 按下浏览器的“收藏”按钮 {Browser_Home} 启动浏览器并打开主页 {Volume_Mute} 主音量静音/取消静音。通常相当于SoundSet,+1,,mute。 {Volume_Down} 减小主音量。通常相当于SoundSet-5。 {Volume_Up} 增加主音量。通常相当于SoundSet+5。 {Media_Next} 在媒体播放器中播放下一曲目 {Media_Prev} 在媒体播放器中播放前一曲目 {Media_Stop} 停止媒体播放器 {Media_Play_Pause} 播放/暂停媒体播放器 {Launch_Mail} 启动电子邮件程序 {Launch_Media} 启动媒体播放器 {Launch_App1} 启动用户程序1 {Launch_App2} 启动用户程序2 ? ? {PrintScreen} PrintScreen {CtrlBreak} Ctrl+break {Pause} 暂停 ? ? {Click[选项]}[v1.0.43+] 使用与Click命令中相同的可用选项发送鼠标点击.例如,{Click}会在鼠标光标当前位置点击一次鼠标左键,而{Click100,200}则在坐标100,200处点击(这里的坐标模式取决于CoordMode)。要移动鼠标而不点击,请在坐标后指定0;例如:{Click100,200,0}。在鼠标点击之间的延迟由SetMouseDelay决定(而不是SetKeyDelay)。 {WheelDown},{WheelUp},{WheelLeft},{WheelRight},{LButton},{RButton},{MButton},{XButton1},{XButton2} 向指针当前位置发送鼠标按钮事件(要指定位置和其他选项,请使用上面的{Click}).在鼠标点击之间的延迟由SetMouseDelay决定.WheelLeft/Right需要v1.0.48+,并且在WindowsVista之前的操作系统中没有效果. {Blind} 当按键序列中首个项目为{Blind}时,如果Alt/Control/Shift/Win在发送开始时为按下的状态则不松开.例如,热键+s::Send{Blind}abc将发送ABC而不是abc,因为用户按住了Shift键。

{Blind}还会忽略SetStoreCapslockMode;即不会改变Capslock的状态.最后,{Blind}会忽略发送的键击中的额外控制功能;这样的键击中可以避免后面的情况:1)发送LWin/RWin键击时出现开始菜单;2)发送Alt键击时激活菜单栏.

在按键的重映射内部使用了Blind模式.例如,重映射a::b会发生这样的情况:1)输入"a"时会映射为"b";2)输入大写字母A时映射为大写字母B;并且3)按下Control-A时映射为按了Control-B.

SendRaw和ControlSendRaw不支持{Blind}.此外,SendPlay也不完全支持这种模式,尤其是在处理修饰键(Control,Alt,Shift和Win)时. {Raw}[v1.0.43+] 准确按照原样发送键击,而不把{Enter}转换成ENTER键击,把^c转换成Control-C等等。{Raw}可以不放在按键序列的开始处,在按键序列中出现时,它会影响它后面的剩余部分. 重复或按住按键

重复键击:把需要重复的按键名称和重复次数写入到大括号中.例如:

Send{DEL4};按4次Delete键.

Send{S30};发送30次大写字母S.

Send+{TAB4};按4次Shift-Tab.

按住或释放按键:把按键名称和单词Down或Up写入到大括号中.例如:

Send{bdown}{bup}

Send{TABdown}{TABup}

Send{Updown};按下向上键.

Sleep1000;按住1秒.

Send{Upup};释放向上键.

使用上面的方法按住一个按键后,这个期间它不会像您实际按住这个按键一样自动重复(这是由于自动重复是一个驱动/硬件的特性).不过,可以使用Loop来模拟自动重复.下面的例子中发送20次tab键击:

Loop20

{

Send{Tabdown};自动重复由连续的按下事件组成(没有弹起事件).

Sleep30;在两次键击之间的毫秒数(或使用SetKeyDelay设置).

}

Send{Tabup};松开按键.















































献花(0)
+1
(本文系zip11首藏)