关于Autohotkey的几个命令

作者&投稿:纳很 (若有异议请与网页底部的电邮联系)
autohotkey 运行dos命令~

SetTitleMatchMode 2
dir=c:\WINDOWS
run,cmd
WinWait, ahk_class ConsoleWindowClass,
IfWinNotActive, ahk_class ConsoleWindowClass, , WinActivate, ahk_class ConsoleWindowClass,
WinWaitActive, ahk_class ConsoleWindowClass,
ControlSend, , cd /d %dir% {Enter}, cmd.exe ; 直接发送到命令提示符窗口.要配合SetTitleMatchMode RegEx或SetTitleMatchMode 2

  AutoHotkey是一个神奇的工具。为了便于新人上手,xbeta写了此篇最最傻瓜的0级入门教程。

  1 何为AutoHotkey
  AutoHotkey是一个小工具软件,可以简化你的重复性工作。
  比如要登录某论坛,你只要按一个键,AutoHotkey就会替你:打开浏览器、输入网址、输入用户名和密码、回车,完成登录过程。
  只要有想像力,AutoHotkey可以完成更多工作,参见 AutoHotkey,让win+run如虎添翼,及更多文章。

  2 下载及安装
  软件名称: AutoHotkey
  软件版本: 1.0.96.00
  软件大小: 2.5MB
  软件授权: 免费、开源
  适用平台: Windows 98-Win7
  下载地址:点击这里下载

  安装:按提示操作即可。我习惯上装在 d:\program files\AutoHotkey
  第1屏是欢迎;点Next。
  第2屏是版权声明;点I Agree。
  第3屏是版本选择,可根据操作系统、需求,选择合适版本。比如我在WinXP下选择了 Unicode(32-bit)。

  第4屏是安装内容:如下图。建议全部选中。

  接下来是安装目录、开始菜单设置、安装过程。
  最后,是安装成功提示:是否看帮助文件。AutoHotkey的帮助文件,写得很细。有耐心的就认真拜读,想成高手的必须要研读。(更多中文译本见这里)

  3 应用例1:提示与访问网页

  创建脚本文件

  如下图,打开你的文本编辑器(notepad、或gVIM),新建一个文件,把下两行内容复制进去。

  msgbox, 这是我的第一个AutoHotkey脚本 `n 我既关注效率,也尊重版权
  run, http。/xbeta。info/autohotkey-guide.htm

  先任意保存到一个地方(比如桌面),文件名任意(比如 new.ahk)
  注意:①文件名后辍必须为ahk;②保存格式必须选为 UTF-8!。

  运行脚本文件

  这时,双击new.ahk看到效果了:
  先弹出如下提醒

  你点击“确定”按钮后,就会启动浏览器,打开本文网址。

  原理解释:
  所谓脚本,其实就是一个txt文件。它由用户编写,由AutoHotkey来执行。
  第1句:msgbox是一个命令(或称为函数),AutoHotkey见到它,就知道要弹出一个消息窗口了。后面的文字是参数,在这一命令中,就是弹出消息的文字。其中的`n表示换行。中间用半角逗号分隔。
  第2句:类似,函数是run,就是运行。后面的参数就是本文的url。也就是说,AutoHotkey的run功能,可以运行程序,也可以打开文档(如 d:\freeware-list.txt),也可以打开网址。

  4 应用例2:缩写

  将下面的语句保存为 new2.ahk (提醒 UTF-8 编码):

  ::test1:: 善用佳软。ひらがな 平仮名;カタカナ 片仮名。Korean/한국어/조선말。

  运行后,在任何能正常显示 unicode 字符的程序中(比如浏览器的地址栏、MS Word),键入 test1后,再加空格、或tab、或回车,就可以触发缩写,“善用佳软……”内容就上屏了。

  通过这一例子,可以看到 AutoHotkey 实现常用短语(地址、邮箱、密码、网址、签名)的缩写非常方便。
  关于缩写功能,还有人用 AutoHotkey 开发过一款专门用于缩写功能的Texter呢,详见这里。

  5 自动登录网站

  将下面的语句保存为 new3.ahk (提醒 UTF-8 编码):

  #1::
  run, http://mail.163.com
  WinWaitActive, 网易 ;;等待网页加载成功(至少title显示出来)
  sleep, 1000 ;;保险起见,再等1秒(视网速而定)
  send, user-id{tab}password{enter};;模拟键入用户名、密码、回车
  return

  运行脚本……但没有反应?没错,这是因为脚本中为相应命令定义了热键。#1表示Win+1键。
  按下Win+1键,脚本会自动打开163信箱、输入用户名、密码,完成登录。

  注意:本例有实际执行中有可能不成功。因为邮箱登录页面可能已经保存了用户名,甚至也保存了密码,导致初始输入焦点不准确。笔者实际在用的例子是登录Lotus Notes客户端,并输入密码。代码如下:

  #n::
  run, "c:\Program Files\lotus
otes
lnotes.exe"
  winwait,,输入口令
  sendinput, mypassword{enter}
  return

  6 后记

  作为0级入门教程,就写到这里吧。只要大家边读、边动手实践,就不难从这些例子中发现 AutoHotkey 的神奇作用。

  如要再进步发掘 AutoHotkey 的魔力,可以:
  (1)阅读官方帮助文档。
  (2)参见笔者使用AutoHotkey的更多实例,AutoHotkey|win run加它更方便,AutoIT3 vs AutoHotkey,AutoHotkey调用Irfanview把24位真彩图片优化到实际色深等。
  (3)目前最全面的AutoHotkey学习资料,由 amnesiac 整理:AutoHotkey 学习指南

  hotString 别名:
  AutoHotKey 称之为hotStrings ,我叫它别名,叫缩写也可以
  比如下面的几个例子
  以第一个
  ::btw::by the way
  为例 不论在什么地方,当你输入btw然后回车或空格或TAB之后,它会自动扩展为后
  面的字符串by the way剩下的几个是公司几个同事的Ip地址,我访问他们的共享文件
  时,只需要输入前面几个字母就可以了,而不用输入难记的IP.

  ::btw::by the way
  ::liuxjs::\\172.20.68.32
  ::lihts::\\172.20.68.55
  ::wanglins::\\172.20.68.51
  ::wangls::\\172.20.68.51
  ::kanban::http://172.20.68.243:8080

  简单的键绑定
  "#" 表示Windows键
  "^" 表示Cntrl键
  "!" 表示Alt,
  "+" 表示Shift键。

  详细内容看官网hotkey

  Ctrl+鼠标中键关闭窗口,

  ^MButton::
  SendInput {Alt Down}{F4}{Alt Up}
  Return
  你不必把鼠标移动到窗口右上方的关闭按钮,按下鼠标后然后鼠标中键点选窗口,就会
  关闭当前窗口。
  原理很简单,就是简单的模拟你按下Alt+F4,的操作,其实不必像上面那么复杂

  ^MButton::
  SendInput !{F4}
  Return
  例如:我想让

  Win+Esc 关闭当前窗口:

  ;;我习惯于Win+Esc 关闭窗口,而不是Alt+F4
  #Esc::Send !{F4}
  Send 和SendInput ,都是模拟用户按下键盘的函数
  进行按键绑定 ,一般是“按键名称”后跟两个冒号,然后是你要进行的操作
  如果只有一句,写在同一行,可以不写"return" ,否则得写return 表示到此结束。

  在资源管理器中,一键显隐隐藏文件

  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;在资源管理器中,在隐与不隐间切换(隐藏文件)
  ;;主要通过修改注册表
  (这一个在Xp下有用,在其他版的可能无用,这个功能网上流传的很广泛)
  这里只是定义一个函数,将它与按键绑定即可。
  toggle_hide_file_in_explore(){

  ;------------------------------------------------------------------------
  ; Show hidden folders and files in Windows XP
  ;------------------------------------------------------------------------
  ; User Key: [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
  ; Value Name: Hidden
  ; Data Type: REG_DWORD (DWORD Value)
  ; Value Data: (1 = show hidden, 2 = do not show)
  RegRead, ShowHidden_Status, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced, Hidden
  if ShowHidden_Status = 2
  RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced, Hidden, 1
  Else
  RegWrite, REG_DWORD, HKEY_CURRENT_USER, Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced, Hidden, 2
  WinGetClass, CabinetWClass
  PostMessage, 0x111, 28931,,, A
  Return
  }
  比如把上面的函数绑定为 Ctrl+Alt+h

  ^!h::toggle_hide_file_in_explore()
  但是,上面有一个问题,如果当前窗口不是资源管理器,它依然会调用这个函数,虽
  然不会造成什么恶果,但是原本这个程序的Ctrl+alt+h 也绑定了一个功能的话,
  这个功能就没法被调用到了,因为它被AutoHotKey 拦截到了。解决办法就是只在资源
  管理器中启用这个键绑定。

  代码如下
  SetTitleMatchMode Regex ;可以使用正则表达式对标题进行匹配
  #IfWinActive ahk_class ExploreWClass|CabinetWClass
  ^!h::toggle_hide_file_in_explore()
  #IfWinActive

  表示如果当前激活的窗口是"我的电脑"或者"我的文档"的话,就进行下面的操作。如
  果不是,就不进行。#IfWinActive是一个结束标志,跟
  #IfWinActive ahkclass ExploreWClass|CabinetWClass 相对应。
  IfWinActive/IfWinExists 内容在这。 它是判断“符合某些条件”的“窗口”是否存有的一个
  函数。它可以通过窗口标题是否含有特定的字符串,来判断。
  如果你用的是英文版的Windows 的话,

  IfWinExist Untitled - Notepad
  ^h::Send , hello
  #IfWinActive
  这段代码 当你在新打开的记事本(也就是标题正好是“Untitled - Notepad”的窗
  口,不能多一个字也不能少一个字)按Ctrl+h ,的时候,会在其中插入"hello"这个单
  词。依照正常人的思维,在中文系统里,相应的代码是

  IfWinExist 无标题 - 记事本
  ^h::Send , hello
  #IfWinActive
  但是,AutoHotKey 对中文虽然支持,但支持的并不好。比如这个地方,中文就不好用。
  刚才,进行窗口标题匹配的时候,要求整个标题必须完全匹配。,也可以做到只匹配
  标题的一部分,
  通过这个命令SetTitleMatchMode 事先进行设置
  比如:

  SetTitleMatchMode 2
  ; OR:
  SetTitleMatchMode RegEx
  可以有 1 2 3 Fast Slow ,RegEx ,六种值

  •1: 表示前端匹配,

  •2: 表示部分匹配

  •3: 表示完全匹配

  •RegEx:表示使用正则表达式进行匹配

  SetTitleMatchMode 2
  IfWinExist Notepad
  ^h::Send , hello
  #IfWinActive
  这个只需要标题中含有Notepad这几个字就可以。
  一个窗口,除了可以用标题进行匹配之外,还可以用窗口所具有的其他属性来匹配
  比如window ID ,Window Class ,进程ID. 最常用的一个就是Window Class
  但是怎样知道一个窗口的window class 是什么呢? AutoHotkey 提供了一个工具
  “Window Spy”,运行这个工具,然后用鼠标点选目标窗口,就会出现这个窗口的一些
  可用信息。包括window class .
  比如这张图是鼠标点选“我的电脑”中地址栏后 的探测结果
  红色的圈起来的是“我的电脑 ”的window class .

  #IfWinActive ahk_class ExploreWClass
  只在"我的电脑"中起作用的代码写在这里
  #IfWinActive

  SetTitleMatchMode Regex ;可以使用正则表达式对标题进行匹配
  #IfWinActive ahk_class ExploreWClass|CabinetWClass
  在"我的电脑" 有“我的文档” 中起作用的代码写在这里
  #IfWinActive

3 将变量v_Enable赋值0 ahk中变量不用申明 你给他什么值就是什么变量
这里他赋值为0相当于为布尔值假
4 按下f2键时会触发的操作
$ 这符号通常仅仅在脚本使用 Send 命令发送包含了热键自身的按键时才有必要使用,否则这可能导致发送热键触发它自己。$ 前缀确切的特性变化取决于操作系统。它相当于使用了#UseHook(使用键盘钩子)。明显这里这个没有必要使用。直接F2::更好
个人认为他这里应该添加的是~作用是:当激发热键时,按键的原来的功能不会被屏蔽(被操作系统隐藏)。
6 变量v_Enable赋值为!v_Enable !是非 意思是假如v_Enable是真就变成假 是假就变成真 前面定义v_Enable=0时就是假
7 if语句 判断 假如v_Enable是0就执行语句8 否则执行语句10
8 关闭计时器Label0
10 开启计时器Label0 并且计时周期为1000ms即1s 计时器一旦开启 默认为周期循环 直到off结束
关于8和10计时器的问题SetTimer, Label0, 1000 当计时1s后执行标签Label0中得内容
而在上面代码里面Label0中得内容就是
{
ControlSend ,,{5},ahk_class GxWindowClass,,,
}

#####################
这些都是ahk很基础的东西 只要看看帮助文档很容易就理解的 球采纳

19个


盘锦市15748442229: autohotkey按键代码 -
宁朗腹膜: t=09::t=1 while t==1 { sleep 200 send {R} sleep 200 send {F} } return8::t=0 return

盘锦市15748442229: 如何使用AutoHotKey实现1控2 -
宁朗腹膜: 多开 ControlSend,, 1, ahk_id %wowid1% ControlSend,, 1, ahk_id %wowid2% ControlSend,, 1, ahk_id %wowid3% ControlSend,, 1, ahk_id %wowid4% ControlSend,, 1, ahk_id %wowid5% Return 双开 WinGet, wowid, List, 魔兽世界 ~2:: KeyWait ...

盘锦市15748442229: AutoHotKey 小键盘和方向键的代码 -
宁朗腹膜: 小键盘: Numpad*;;*代表数字0-9 详细说明:Numlock ON/Numlock OFF Numpad0 NumpadIns Numpad1 NumpadEnd Numpad2 NumpadDown Numpad3 NumpadPgDn Numpad4 NumpadLeft Numpad5 NumpadClear Numpad6 NumpadRight ...

盘锦市15748442229: autohotkey编程,想实现以下功能,诚心请教 -
宁朗腹膜: 这样比较复杂,建议你通过找图或者找色的方法来完成,wingettext命令只对窗口中的文本有效过.我是指EXE程序,窗口中其实可以通过其他办法来获取.不过都麻烦了点.简单的就是这样做.;查找图片 ImageSearch, OutputVarX, ...

盘锦市15748442229: AutoHotkey按键设置 -
宁朗腹膜: F1:: Msgbox, Hello! You have pressed F1. ^1:: Msgbox, Hello! You pressed Ctrl+1. !1:: Msgbox, Hello! You Pressed Alt+1.

盘锦市15748442229: 求一个autohotkey 脚本 对所有窗口发送指令 一直按 4 号键 每隔30秒按1 每隔10秒按2 -
宁朗腹膜: 给你一个思路,使用LOOP循环,每0.1秒一次 并计数,每次发送4 然后300次的时候发送1100次的时候发送2 获取所有窗口使用WinGet 代码类似下面 js = 0 Loop { js := js + 1 WinGet, id, list,天谕-无束缚3D幻想网游 Loop, %id% { send, 4 } if mod(js, 100) == 0 { Loop, %id% { send, 2 } if mod(js, 300) == 0 { Loop, %id% { send, 1 } } } sleep, 100 }我没有测试

盘锦市15748442229: autohotkey 中waitkey a 是否可以写成 send a -
宁朗腹膜: Autohotkey 里面没有waitkey这个命令的,只有keywait.等待按键或鼠标/操纵杆按钮被松开或按下.KeyWait, KeyName [, Options] 而Send是发送按键和点击

盘锦市15748442229: 关于AutoHotkey -
宁朗腹膜: AutoHotkey 是一款免费的、Windows平台下开放源代码的热键脚本语言.有了它,您就可以: 通过发送键盘或鼠标的键击动作命令来实现几乎所有操作的自动化.您可以自己编写 宏 或者使用宏录制器来生成; 为键盘,游戏操纵杆和鼠标创建 ...

盘锦市15748442229: AutoHotkey的鼠标操作 -
宁朗腹膜: !1::temp = %Clipboard%Clipboard =Send, ^cClipWaitIf !ErrorLevelRun "D:\EmEditor Professional V9.15 32Bit 绿色汉化版 - 强大的编辑工具附右键关联功能\EmEditor.exe" %...

盘锦市15748442229: autohotkey 运行dos命令 -
宁朗腹膜: SetTitleMatchMode 2 dir=c:\WINDOWS run,cmd WinWait, ahk_class ConsoleWindowClass, IfWinNotActive, ahk_class ConsoleWindowClass, , WinActivate, ahk_class ConsoleWindowClass, WinWaitActive, ahk_class ConsoleWindowClass, ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网