`
knitter
  • 浏览: 66717 次
  • 来自: ...
社区版块
存档分类
最新评论

AHK使用手记--Run/RunWait指令

阅读更多

翻自AHK用户手册

2008年3月4日星期二

9:35

Runs an external program. Unlike Run, RunWait will wait until the program finishes before continuing.

Run, Target [, WorkingDir, Max|Min|Hide|UseErrorLevel, OutputVarPID]

 

Target:

1.可以是文档、URL、可执行文件(.exe,.com,.bat,etc.),快捷方式(.lnk),或者是系统动作(system verb).(见下面的说明)

2.如果Target是没有指定路径的本地文件,AHK或先搜索A_WorkingDir变量指定的路径;如果在该路径内没有找到相匹配的文件,系统会从全局查找并装载,比如其包含在PATH路径中。

3.如果要加参数,只要把它们直接跟在程序名或文档名的后面即可。如果参数中包含空格,最安全的做法是将它们放入双引号中(尽管有些时候没有加双引号也可以正确运行)

 

WorkingDir

1.待装载项目所在的路径;

2.不要将路径包含在双引号中,即便其包含空格;

3.如果忽略该参数,系统会默认使用脚本自身的工作目录(A_WorkingDir变量指定)

 

Max|Min|Hide

UseErrorLevel

1.如果忽略,Target 会按默认配置导入;

2.作为选择,可使用如下一个或多个关键词:

Max:按最大化载入

Min:按最小化载入

Hide:按隐藏载入(不能与上面的任一个搭配使用)

注意:某些程序(比如计算器),不会接收启动设置,所以在其后加上Max/Min/Hide参数是无效的

3.UserErrorLevel:

UseErrorLevel can be specified alone or in addition to one of the above words (by separating it from the other word with a space).

如果载入错误,该选项会略去错误对话框,同时将ErrorLevel的值赋为Error,然后允许当前线程(current thread)继续执行下去。

如果成功载入,RunWait指令会将ErrorLevel变量的值设置为程序的退出代码,而Run指令会将ErrorLevel变量的值置为零。

如果指定了UserErrorLevel参数,A_LastError变量的值会被置为系统函数GetLastError()所返回的结果。A_LastError 变量是一个介于0到4294967295 的号码(它通常被格式化为十进制,而非十六进制)。零(Zero)意味着成功,所有其它的号码意味着载入失败。每一个号码都与某一个特定的错误情形相对应(可以通过在微软官方网站www.microsoft.com中搜索"System error codes"来获取一个错误代码对照列表)。与ErrorLevel变量相似,A_LastError变量是每个线程都拥有的设置;也就是说,当某一线程被其它的线程中断的时候,它将不会被改变。但是,A_LastError变量同时可以被DllCall函数设置。

OutputVarPID

1.该变量用于存储最近装载的程序的唯一的标识符(Process ID(PID)).

2.如果PID值无法确定,该变量会被置空(blank);这通常发生在装载一个系统动作(System Verb)、文档或快捷方式(而非某一直接的可执行文件)时.

3.RunWait指令也支持该参数,尽管它的OutputVarPID必须在另一个线程中登记otherwise, the PID will be invalid because the process will have terminated by the time the line following RunWait executes).

4.当Run指令得到一个PID的时候,也许并非进程创建的所有窗口都已经关闭了。

使用 WinWait ahk_pid %OutputVarPID% 语句等待至少有一个窗口已经被创建。

Run指令:run指令不会设置ErrorLevel变量除非UseErrorLevel变量是有效的。如果那样的话,ErrorLevel变量会置为Error(出错时)或零(成功时)

RunWait指令:runwait指令将ErrorLevel变量的值设置为程序的退出代码(一个32位的带符号整数)。如果UseErrorLevel变量有效并且出现装载失败,它将存储ERROR值。

Remarks

不像Run指令,RunWait指令会等待Target参数指定的内容关闭或退出后执行,那时ErrorLevel变量的值会被赋为程序的退出代码(一个带符号的32为整数)。某些程序似乎会立即返回(退出代码),尽管它们实际上还在运行。这种程序产生了另一个进程。

如果Target 参数包含了任何逗号,它们(逗号)必须使用转移字符来表示(下面的例子中出现了3此):

Run rundll32.exe shell32.dll`,Control_RunDLL desk.cpl`,`, 3 ; Opens Control Panel > Display Properties > Settings

P.S.在"运行"中执行的实际效果为:

rundll32.exe shell32.dll,Control_RunDLL desk.cpl,, 3

P.s. 3是"设置"分页的编号,延伸:试试如下指令:

Run rundll32.exe shell32.dll`,Control_RunDLL desk.cpl`,`, 2

Run rundll32.exe shell32.dll`,Control_RunDLL desk.cpl`,`, -1

……

当通过ComSpec指令(即cmd.exe)运行某程序时(也许你需要重定向该程序的输入或输出),如果执行的路径名称中包含空格,那么整个路径外面应该包含一对双引号。在下面的例子中,外层的双引号使用了红色进行标识,内层的双引号使用黑色标识。

Run %comspec% /c ""C:\My Utility.exe" "param 1" "second param" >"C:\My File.txt""

如果Target是一个精确的路径,执行效率会得到轻微的改良。例如:Run, C:\Windows\Notepad.exe "C:\My Documents\Test.txt" 优于 Run, C:\My Documents\Test.txt

 

特定的CLSID目录可能可以通过Run直接打开,例如:

Run ::{20d04fe0-3aea-1069-a2d8-08002b30309d} ; 打开“我的电脑”
Run ::{645ff040-5081-101b-9f08-00aa002f954e} ; 打开“回收站”

 

系统动作(System verbs)与在资源管理器中文件的右键菜单想对应。如果某个文件没有指定verb进行加载,系统会使用该文件的默认verb(通常是"打开")。如果指定了verb,verb应该跟随在目标文件名的后面。目前支持如下verbs:

Properties:显示相应文件的属性对话框。注:该对话框会在script终止时自动关闭。要想改变该情况,可以先使用WinWait指令等待窗口出现,然后使用WinWaitClose指令等待用户关闭该窗口

  • Find:打开相应目录的"查找"窗口
  • Explorer:在资源管理器中打开相应目录
  • edit:编辑该文件。如果没有指定给类文件的"Edit"属性就不会起作用。
  • open:打开该文件。(通常不需要,因为这是大多数类型文件的默认操作)
  • Print:打印该文件。

 

当RunWait指令处于等待状态的时候,新线程可以通过热键(hotkey),自定义菜单(custom menu item)或定时器(timer)载入。

 

示例:

Run, Notepad.exe, C:\My Documents, max ;最大化打开记事本,默认目录设为C:\My Documents
Run, mailto:someone@domain.com?subject=This is the subject line&body=This is the message body's text.

;向someone@domain.com发送一封标题为"This is the subject line",内容为"This is the message body"的邮件

Run, ReadMe.doc, , Max UseErrorLevel ;

;最大化打开ReadMe.doc(先在该脚本所在的目录下搜索该文件,如果没有找到在到Path环境变量中指定的路径中去搜索该文件),忽略错误提示(如果操作成功,将零保存到ErrorLevel变量中,如果操作失败,将ERROR保存到ErroeLevel变量中)

if ErrorLevel = ERROR
MsgBox The document could not be launched.

;如果ErrorLevel的值等于ERROR,弹出提示窗口

RunWait, %comspec% /c dir c:\ >>c:\DirTest.txt, , min

;将C:\下的目录树输出到C:\DirTest.txt文件中,最小化执行

;对于cmd指令:如果指定了 /C 或 /K,命令行开关后的命令行其余部分将作为命令行处理,更多帮助参加cmd /?

Run, c:\DirTest.txt

Run, properties c:\DirTest.txt
;打开C:\DirTest.txt的属性窗口

Run, www.autohotkey.com ; i.e. any URL can be launched.

Run, mailto:someone@somedomain.com ; This should open the default e-mail application.
Run ::{20d04fe0-3aea-1069-a2d8-08002b30309d} ; Opens the "My Computer" folder.
Run ::{645ff040-5081-101b-9f08-00aa002f954e} ; Opens the Recycle Bin.
; To run multiple commands consecutively, use "&&" between each:
Run, %comspec% /c dir /b > C:\list.txt && type C:\list.txt && pause

分享到:
评论

相关推荐

    ahk-Excel-空单元格填充.ahk

    使用快捷键填充Excel空单元格、查找Excel空单元格

    AHK-v2-script-converter:AHK v1-> v2脚本转换器正在进行中

    AHK-v2脚本转换器 该脚本将尝试将用AHK v1编写的脚本转换为正确的语法,以使其在。 快速转换一些较大的语法更改很有用。 之后,您可以调查转换后的版本,以了解转换器未涵盖的其他较小更改。 我采用了下面链接的...

    AHK-CapsLock修改为回车-左手快捷键.ahk

    关键字-回车映射-ahk回车映射-左手回车 ;;快捷键x说明 上下左右 ;; CapsLock+a 箭头左 ;; CapsLock+s 箭头下 ;; CapsLock+d 箭头右 ;; CapsLock+w 箭头上 ;; CapsLock+q 箭头上--防止误触屏-CapsLock+q也映射为箭头...

    AutoHotkey脚本.ahk文件关联工具-解决方案-注册表.zip

    2. "readme-AutoHotkey脚本.ahk文件关联工具-解决方案-注册表.txt":这是一个说明文档,详细介绍了如何使用提供的注册表文件以及可能遇到的问题和解决方法。通常,用户只需要双击".reg"文件并确认导入操作,但有时...

    ahk4j-core-0.9-beta.jar

    官方版本,亲测可用

    ahk4j-core-0.9-beta-sources.jar

    官方版本,亲测可用

    SET_AHK按键连发工具

    SET_AHK按键连发工具是一款基于AutoHotkey脚本语言开发的高效自动化工具,主要用于实现游戏或应用程序中的按键自动连续点击功能。AutoHotkey是一种强大的Windows自动化和快捷方式创建工具,用户可以通过编写简单的...

    PoE trade ahk-crx插件

    要使用:-安装https://www.autohotkey.com/-下载https://raw.githubusercontent.com/akoidan/POE/master/poe.ahk-右键单击或使用自动快捷键打开poe.ahk-打开pathofexile.com/trade-在新区域中,单击“创建”-上面的...

    FGO-AHK自定义刷本流程1

    本文将详细讲解如何使用AHK进行自定义刷本流程,并提供一些实例供参考。 ### 一、脚本各种操作代码 1. **切换瞄准的敌人**: 使用`target(n)`命令可以切换瞄准的敌人,其中`n`代表敌人的位置,1对应左,2对应中,...

    AHK-survival-evolved:减少ARK中乏味的辅助脚本的集合

    本文将详细介绍如何使用AHK脚本来优化游戏体验,提高效率,以及如何管理和使用提供的"AHK-survival-evolved"脚本集合。 **AutoHotkey简介** AutoHotkey是一种强大的Windows自动化工具,它允许用户通过编写脚本来...

    AHK快餐店_懒人包

    本教程包括三部分内容 1.教程——AHK 快餐店.chm 2.开发工具——SciTE.exe 3.一系列已经写好的autohotkey脚本例子——文中脚本

    AHK帮助中文版-切换到目录后使用.rar

    标题中的“AHK帮助中文版-切换到目录后使用.rar”指的是AutoHotkey(AHK)的中文帮助文档,这是一个压缩文件,包含了关于AHK的详细教程和参考指南。AutoHotkey是一种流行的、免费的、开源的脚本语言,主要用于自动化...

    dotfiles:我的文件

    启用配置 吉特 ~/.gitconfig iterm2 ...9秒 ~/.k9s/* 卡拉宾纳 导入karabiner 多路复用器 ...登录时安装AutoHotKey并运行NaviCaps.ahk /c/Users/xxx/.wslconfig settings.json是Windows Terminal配置文件

    ahk-minecraft-backup

    ahk-minecraft-backup 这是您的Minecraft单人游戏世界的简短而简单的AHK(AutoHotkey)备份脚本。 我失去了多个硬核世界,因为不记得备份世界或只是由于某些损坏而丢失了文件,因此花了很多时间。 这启发了我编写此...

    AHK-HID-Hotkeys:用基于 HID 的系统替换 AHK 的热键的类,不受 AHK 热键的限制

    #AHK-HID-Hotkeys 用不受 AHK 热键限制的基于 HID 的系统替换 AHK 热键的类。 专门旨在使动态热键解决方案更易于编写。 ####本课程试图克服的香草 AHK 的局限性: 最多 100 个热键这通常不是问题,但在某些情况下...

    AHK_DllCall_WinAPI:AutoHotkey、WinAPI 和 DllCalls

    由 jNizM 编写的 AutoHotkey、WinAPI 和 DllCall AHK --> DllCall --> WinAPI当前的剪贴板功能[CloseClipboard](src/Clipboard Functions/CloseClipboard.ahk) [EmptyClipboard](src/Clipboard Functions/...

    AHK-vJoy-Library:AutoHotkey 的库,用于控制 vJoy 虚拟操纵杆。 (旧的,被 AHK-CvJoyInterface 取代)

    AHK-vJoy-图书馆 AutoHotkey 的库,用于控制 vJoy 虚拟操纵杆。 对于 Shaul 的 vJoy - 与 x64 和 x86 兼容 - 甚至在 x64 操作系统上运行的 x86 编译脚本... 基于 Axlar 的代码 - 要求 AutoHotkey 很明显,但...

    AHK-SizeOf-Checker:一个可以检查窗口定义的字节数的库。 _Struct 和 WinStructs 的伴侣。 需要视觉工作室

    AHK-SizeOf-Checker 一个可以检查窗口定义的字节数的库。 依赖项: 必须安装 Visual Studio。 ##什么? 用于检查 Windows 结构、数据类型等大小(以字节为单位)的实用程序。 ##为什么? 与 HotkeyIt 的 _...

    AHK-Library-Setup:AHK 图书馆作者的工具,以确保正确设置使用他们的图书馆的人

    AHK-图书馆-设置 AHK 图书馆作者的工具,可确保正确设置使用其图书馆的人。 ###为什么我想要它? 如果您分发 Autohotkey 库,例如通过 GitHub,并且您希望人们可以从任何文件夹轻松使用它,那么此工具将减少您的...

    AHK-Object-Oriented-GUIs:一个用于在AHK v1.1面向对象中使用GUI的库

    "AHK-Object-Oriented-GUIs" 是一个专为AHK v1.1设计的库,旨在帮助开发者以面向对象的方式创建和管理图形用户界面(GUIs)。 在传统的AHK中,GUI通常通过一系列的命令和参数来创建和控制,如`Gui, Add`、`Gui, ...

Global site tag (gtag.js) - Google Analytics