2023年12月18日发(作者:)

一、字符、按键:

1、最常用按键:

# Win

! Alt

^ Control

+ Shift

<使用成对按键中左边的一个,>使用成对按键中右边的一个

* 通配符:只要包含有指定调节键的按键被按下即触发热键

` 重音符/转义符,`n回车 `r换行 `t是Tab,`b退格,::btw::by the way`·可以输出字符后加空格

转义符作用:逗号和百分号具有特殊含义,需要使用`,来指定原义的逗号,使用`%来指定原义的百分号

~ 如果自定义的热键和系统/程序原有的热键相同,则这些热键同时触发。若没有~则将屏蔽原有的按键

~RButton::MsgBox 您按下了鼠标右键,~a::Send BBB →aBBB;a::Send BBB →BBB

&可用在两个按键(包括鼠标按键)之间来组合它们成为一个自定义的热键

Numpad0 & Numpad1::Run Notepad

LAlt & WheelDown::AltTab

:①::btw::by the way 需要按结束符才触发(结束符可以是-()[]{}':;"/,.?!`n `t (注意:`n代表回车,`t代表Tab,在`n和 `t之间还有一个空格)

②:*:j@::john@ *表示取消结束符

:?:al::airline ?表示键入任何含有缩写词的词句都会触发热字串,practical→practicairline

③:c:ceo::chief executive officer

:c:CEO::Chief Executive Officer c表示区分大小写

④:0:ar::aristocrat 加0相比不加0的::ar::,不会在单词后多输出一个空格

⑤::sbs::

clipboard=顺便说一下

Send,^v

Return

【: :::后面加*表示不需要终止符去触发Hotstring,加?表示即使热字符串在另一个单词的中间,依然可以触发。加C表示大小写敏感,加O表示当热字符串生效时,不显示使用的终止符,自动替换热字串的终止符,加B表示不退格,

保留原有继续输入。加R表示原样发送原始的替换文本,{Enter}不转换成Enter按键】

; 在行首空格或Tab后使用分号可以注释当前行脚本,/* 和 */ 符号注释整块代码

Down用来表示按键被按下,但是不松开

UP用来表示当某按键被松开后触发热键而不是在其被按下后

"Up" 还可以配合一些热键,例如: ^!r Up::MsgBox 您按下并松开了Ctrl+Alt+R

2、常用按键:

{Enter}Enter键;{Esc}Esc键;Tab}Tab键;{Backspace}、{BS}倒退键;{Delete}删除键;{Insert}插入键;{NumLock}数字锁;{PgUp}、{PgDn}换页键;{CapsLock}大写键;{Up}、{Down}、{Left}、{Right} 方向键;{Ctrl}、{LCtrl}、{RCtrl}控制键;{Alt} {LAlt}、{RAlt}Alt键;{LButton}、{MButton}、{RButton}左、中、右钮;{WheelDown}、{WheelUp}滚轮向下与向上,appsky右键

3、Num区按键:

NumpadDiv-(小键盘上的)除号键/斜杠NumpadMult-(小键盘上的)乘号键/星号,NumpadAdd-(小键盘上的)加号键,NumpadSub-(小键盘上的)减号键,NumpadEnter-(小键盘上的)回车键

NumLock关闭时:NumpadDel NumpadIns,NumpadUp,NumpadDown,NumpadLeft,NumpadRight,NumpadHome,NumpadEnd,NumpadPgUp,NumpadPgDn,NumpadDel,NumpadIns(0),NumpadClear(5) NumpadUp,NumpadDown,NumpadLeft,NumpadRight,NumpadHome,NumpadEnd,NumpadPgUp,NumpadPgDn

NumLock开启时:Numpad0~9,NumpadDot

4、多媒体按键:

Xbutton1,XButton2,Browse_Back,Browse_Forward,Browser_Refresh,Browser_Stop,Browser_Search,Browser_Favorites,Browser_Home,Volume_Mute,Volume_Down,Volume_Up,Media_Next,Media_Prev,Media_Stop,Media_Play_Pause,Launch_Mail,Launch_Media,Launch_App1,Launch_App2

SC SC+代码:sc045 pause sc046 scrolllock sc137 prtscreen sc02B

【多媒体按钮】sc121 计算机 sc132a 浏览器 sc16b 资源管理器 sc16c 邮件

5、其他按键

$ 键盘钩子,Send命令发送包含了热键自身的按键时才需要使用此符号,强制使用键盘钩子来实现此热键,避免了Send命令触发它自己

RAlt & j::AltTab AltTab 和 ShiftAltTab 是两个特殊的命令, 它们仅在与热键在同一行时才能被识别

SI、SP 或 SE [v1.0.43+]:设置自动替换热字串发送键击的方法。这些选项是互相排斥的: 每次只会有一个生效. 下面对每个选项进行说明:

•SI 表示 SendInput, 它通常比其他模式拥有较好的速度和可靠性. 另一个好处是和下面的 SendPlay 一样, SendInput 会在热字串自动替换文本时会延迟您输入的内容. 这样避免了您的键击穿插到替换的内容中. 当 SendInput

不可用时, 热字串会自动使用 SendPlay.

•SP 表示 SendPlay, 它可以让热字串运行在更大范围的游戏中.

•SE 表示 SendEvent, 在比 1.0.43 早的版本中这是默认选项.

6、运算符

%Var%、++ --、**、- ! ~ & *、* / //、+ -、<<>>、& ^ |、. 、><>= <=、= == <> !=、NOT、AND &&、OR ||、?:、:= += -= *= /= //= .= |= &= ^= >>= <<=、, 、 mod()、round()、abs()

 Abs(Number):返回Number的绝对值. 返回值的类型与Number相同 (整数或浮点数)

 Ceil(Number):返回由Number向上取整到最近的整数(不带.00 后缀)。例如,Ceil(1.2)结果为2而Ceil(-1.2) 结果为-1。

 Floor(Number):返回由 Number 向下取整到最近的整数(不带任何.00后缀).例如, Floor(1.2)的结果为1而 Floor(-1.2)结果为-2.

 Log(Number):返回Number的对数(底数为10).结果格式化为浮点数. 如果Number为负数, 则返回空字符串

 Round(Number [, N]):如果 N 省略或为0, 则Number被取整到最近的整数. 如果N为正数, 则Number被取整到N个小数位.如果N为负数,则Number被取整到十进制小数点左边N位。

 Sqrt(Number):返回 Number的平方根.结果格式化为浮点数.如果 Number为负数,则函数返回空字值(空字符串)

二、命令

1、clipboard

clipboard = %clipboard%

2、ClipWait

等待,直到剪贴板(clipboard)中含有数据为止, ClipWait [, SecondsToWait, 1],secondtowait如果省略, 此命令将无限期等待;如果等待时间超时,ErrorLevel返回1,否则返回0。ClipWait是阻塞式的,等待过程中,不能触发新的线程。

无参数

ToWait

1

等待直到粘贴板里有内容

计,所以0.5即0)。如果没有该参数,等待时间不确定,直到粘贴板里有内容。

如果该参数是1,粘贴板里面的数据可以是任意类型(如图片)。如果没有该参数,粘贴板里的数据就必须是text类型的(即可以在记事本粘贴的数据类型)

Seconds

定义等待的时间,单位是秒。可以包含小数点也可以是表达式(小数忽略不例子:

clipboard = ; 清空剪贴板

Send, ^c

ClipWait, 2

if ErrorLevel

{

MsgBox, The attempt to copy text onto the clipboard failed.

return

}

MsgBox, clipboard = %clipboard%

return

3、

4、Exit

Exit 退出当前线程或整个脚本(如果不是持久(persistent)运行的非热键类脚本的话)。

ExitApp 无条件地终止当前脚本

5、goto

Gosub 跳到指定标识并继续执行命令,直至遇到返回(Return)命令。

Goto 跳到指定标识并继续执行命令。

6、IF

If ErrorLevel MsgBox, 0, 错误, 无法进行指定操作 ;出现错误则提示用户

7、Msgbox

MsgBox [, 选项, 对话框标题, 对话框信息文本, 超时时间]

Msgbox,

0:确定

1:确定和取消

2:中止,重试和忽略

3:是、否和取消

4:是和否

5:重试和取消

6:取消、重试和继续

IFMsgbox,Yes是 | No否 | OK确定 | Cancel取消 | Abort中止 | Ignore忽略 | Retry重试

clipboard = 这是替换文本的第一行,`r`n这是第二行。`r`n这个就是在剪切板换行!

MsgBox %clipboard%

8、Reg

RegRead, 输出变量, 主键名, 子键名 [, 键项] 读取操作

RegWrite, 数据类型, 主键名, 子键名 [, 键项, 数值] 写入操作

RegDelete, 主键名, 子键名 [, 键项] 删除操作

(RegRead, OutputVar, HKEY_LOCAL_MACHINE, SOFTWAREMicrosoftWindows NTCurrentVersion, BuildLab

RegWrite, REG_DWORD, HKEY_LOCAL_MACHINE, SYSTEMCurrentControlSetControlSession Manager, AutoChkTimeOut,

RegDelete, HKEY_LOCAL_MACHINE, SOFTWAREtest,)

9、return

如果热键只需要执行单行语句, 那么此行可以直接放在双冒号的右边,可以不使用Return。

10、run

Run,notepad,max

Run ::{645ff040-5081-101b -9f 08-00aa 002f 954e}

收站

Run,find C: 打开搜索窗口

Run, properties 打开文件属性

Run, %comspec% /k dir, C:My Documents运行CMD命令

始运行cmd】

打开回【加/k表常开CMD窗口,加/C表完成后自动关闭,不加表示一闪而过,“,”后表示从哪里开RunWait, %comspec% /c dir c:并不存在的文件.txt, , hide

11、ruanwait

如果希望脚本在程序或文档关闭后才继续执行下一步,那么就需要使用runwait(运行等待),把内建的错误返回码(ErrorLevel)这个变量放置到它所运行的程序的退出码中

Runwait,%comspec% /c dir C:不存在的.txt,,hide

Msgbox,返回的值是%ErrorLevel%

12、Send

Send,{AltDown}n{AltUp} 按住Alt+n

Send,{TAB 6} 按6次Tab键

14、环境变量

%ProgramFiles%

15、控件

Control, Cmd [, Value, Control, WinTitle, WinText, ExcludeTitle, ExcludeText]

 Click/MouseClick,模拟用户物理操作(点击)

MouseClick, left, 112, 223

 MouseClickDrag,鼠标拖动

 ControlSetText,目标控件,新文本,窗口标题,窗口文本,排除标题,排除文本

ControlSetText, Edit1, E:1,setup Foobar 写入安装位置

 ControlClick,Button3, 鼠标按键,第三个按钮(Windows Spy获取)

 Choose,N

个项目

选择下拉列表,表示选中第N

 ChooseString,String

选择与字符串相匹配的项目

ControlFocus 设置某窗口上已有控件的输入焦点。

ControlGet 检索指定控件的各种信息。

ControlGetFocus 检索目标窗口中哪个控件具有输入焦点。

ControlGetPos 获取指定控件的位置和尺寸等信息。

ControlGetText 获取指定控件上的文字。

ControlMove 移动指定控件或重新设置其尺寸。

ControlSend / ControlSendRaw 向指定窗口或控件发送模拟的键击动作。

ControlSetText 修改指定控件上的文字。

 CoordMode 设置各种命令的坐标关联模式,例如关联激活窗口或整个屏幕。

InputBox(输入框)提示用户输入字串 InputBox,变量名,输入数值

Edit 使用关联的编辑器打开当前脚本进行编辑

FileSelectFile 或 FileSelectFolder 让用户选择文件或文件夹

GUi的结尾 return GuiClose ExitApp

其它命令

Keywait,等待按键被按下

BlockInput,on 关闭鼠标键盘,屏蔽用户输入;

BlockInput,off 开启鼠标键盘

AutoScriptWrite 记录键盘和鼠标动作,还可以获得窗口的激活状态

SetNumLockState,Alwayson 设置数字锁常开,还包括 Capslock 和 Scrolllock

GetKeyState,Outputvar,keyname[,mode]:【命令】按下时返回D,弹起时返回U

GetKeyState(KeyName [, "P" 或 "T"]):【函数】按下返回true,弹起时返回false

Dir 后有空格,路径不需要加双引号

FormatTime 转换 YYYYMMDDHH24MISS 格式的时间戳(timestamp)变为指定的日期/时间格式。

Drive,弹出或收回光驱,Drive, Sub-command [, Drive , Value]

【修改卷标Drive,Label,C:,Seagate 弹出或收回光驱Eject[,Drive,0] 1-收回】

三、File系列

1、FileExist

IfExist(如果存在): 检查某个文件或文件夹是否存在

FileExist,还可以使用if FileExist("C:My ")

2、FileCopy(文件复制)/ FileCopyDir(复制文件夹及子文件夹和文件,类似xcopy)

FileCopy,SourcePattern,DestPattern[,Flag]

SourcePattern

单个文件或文件夹的名称或者通配符模式,例如C:Temp*.tmp.如果未指定绝对路径则假定SourcePattern在%A_WorkingDir%中。

DestPattern

目标的名称或模式,如果未指定绝对路径则假定在%A_WorkingDir%中.要执行简单地复制(保留原来的文件名),那么只需要指定文件夹名,如下面这些功能相同的例子所演示的那样:

FileCopy,C:*.txt,C:MyFolder

FileCopy,C:*.txt,C:MyFolder*.*

Flag

(可选参数)此标志决定了是否覆盖现有的文件:

0=(默认)不覆盖现有的文件

1=覆盖现有的文件

此参数可以为表达式,甚至是计算结果为真或假的表达式(因为真和假内部分别保存为1和0)

ErrorLevel

ErrorLevel被设置为由于错误而无法复制的文件数,否则为0

如果源文件为单个文件(没有通配符)且此文件不存在,则ErrorLevel被置为0

如果复制一个文件来覆盖它自己总是会导致错误,

例子:

FileCopy,C:,D:MainBackup;复制文件并保留原来的文件名.filename.

FileCopy,C:,C:MyFile ; 复制文件到同一个文件夹并改变文件名.

FileCopy,C:Folder1*.txt,D:New Folder*.bkp ;复制到新位置并改变扩展名.

FileCopyDir,Source,Dest[,Flag]只复制单个文件夹

SourcePattern

源目录的名称(不含末尾的反斜线),如果未指定绝对路径则假定在%A_WorkingDir%中.例如:C:MyFolder

DestPattern

目标目录的名称(不含末尾的反斜线),如果未指定绝对路径则假定在%A_WorkingDir%中.例如:C:Copy of My Folder

Flag

可选参数)此标志决定了是否覆盖现有的文件:

0(默认):不覆盖现有的文件.如果存在Dest名称的文件或目录,则操作会失败而且不会产生效果.

1:覆盖现在的文件.但是,不会删除在Dest中没有被Source目录中文件覆盖的其他子目录或文件。

此参数可以为表达式,甚至是计算结果为真或假的表达式(因为真和假内部分别保存为1和0)

ErrorLevel

如果遇到问题则ErrorLevel被置为1,否则为0.但是,如果源目录包含任何由文件和名称为PageName_files的相应目录组成的网页,那么即使复制成功也可能提示错误.

如果目标目录结构不存在,则可行时会进行创建.

例子:

FileCopyDir,C:MyFolder,C:CopyofMy Folder

3、FileMove/FileMoveDir 移动或重命名文件/文件夹

FileMove,SourcePattern,DestPattern[,Flag]移动或重命名一个或多个文件。

FileMove,C:,C:

FileMoveDir连同子文件夹和文件在内移动整个文件夹。也可以用来重命名文件夹。

Flag

(可选参数)此标志决定了是否覆盖现有的文件:

0=(默认)不覆盖现有的文件

1=覆盖现有的文件

此参数可以为表达式,甚至是计算结果为真或假的表达式(因为真和假内部分别保存为1和0).

FileMoveDir,Source,Dest[,Flag]移动文件夹及其所有子文件夹和文件。或重命名文件夹

FileMoveDir,C:MyFolder,D:MyFolder

Flag:

(可选)指定下列单个字符的其中一个:

0(默认):不覆盖现有的文件.如果存在Dest名称的文件或目录,则操作会失败.

1:覆盖现在的文件.但是,不会删除在Dest中没有被Source目录中文件覆盖的其他子目录或文件。已知限制:如果在同一个卷上存在和Source相同的Dest文件夹,则Source会被移入到这个文件夹中而不覆盖它。要避免此问题,请参阅下一个选项.

2:与上面的模式1相同,不过不存在那个限制.

R:重命名目录而不移动它.尽管普通的重命名和移动具有相同的效果,但如果您想要"完全成功或完全失败"的结果时它就会有用;即您不希望由于Source或其中的某个文件被锁定(在使用中)而只是部分移动成功.尽管这种方法不能移动Source到另一个卷中,但它可以移动到同一个卷中的其他任何目录.如果已经存在Dest名称的文件或目录时,则操作失败.

例子:

FileMoveDir, C:My Folder, D:My Folder ; 移动到新驱动器。

FileMoveDir, C:My Folder, C:My Folder (renamed), R ; 简单地重命名。

FileMoveDir, C:My Folder, C:New LocationMy Folder, R ; 只有在同一个卷上,文件夹可以被“重命名到”另一个位置。

4、FileCreateDir/FileCreateShortcut创建文件夹/创建快捷方式

FileCreateDir,DirName

FileCreateDir,C:Test1MyImagesFolder2

DirName:

要创建的目录名

FileCreateShortcut,Target,LinkFile[,WorkingDir,Args,Description,IconFile,ShortcutKey,IconNumber,RunState]

FileCreateShortcut,,%A_Desktop%My

,C:,"%A_ScriptFullPath%",My Description,C:My

,i

Target:

快捷方式引用的文件名,其中应该包含绝对路径,除非文件集成到了系统中(如)。创建快捷方式时它指向的文件不需要一定存在;换句话说,可以创建指向无效目标的快捷方式。

LinkFile:

要创建的快捷方式文件名,如果未指定绝对路径则假定在%A_WorkingDir%。必须确保扩展名为.lnk.如果文件已经存在,则它会被覆盖。

WorkingDir:

启动快捷方式时Target的当前工作目录。如果为空或省略,则快捷方式的"起始位置"字段为空,而当快捷方式启动时系统会提供默认的工作目录。

Args:

启动快捷方式时传递给Target的参数。参数之间使用空格分隔。如果某个参数包含空格,则要把它括在双引号中。

描述快捷方式的注释(操作系统显示在工具提示中,等等.)

IconFile:

显示在LinkFile中图标的完整路径和名称.它必须为ico文件或者EXE或DLL中的首个图标.

ShortcutKey:

单个字母,数字或在按键列表中的单个按键的名称(可能不支持鼠标按钮或其他非标准的按键).不要包含修饰符.目前,所有创建的快捷键都使用CTRL+ALT作为修饰键.例如,如果在此参数中指定字母B,则快捷键将为CTRL-ALT-B.

IconNumber:

要使用IconFile首个外的其他图标, 请在这里指定编号(可以为表达式).例如,2表示第二个图标.

RunState:

要最小化或最大化运行Target,请指定下列数字的其中一个:

1 - 正常(这是默认的)

3 - 最大化

7 - 最小化

5、FileDelete/FileRemoveDir/ FileRecycle 删除文件/文件夹,把文件/文件夹放入回收站

FileDelete, FilePattern

FileDelete, C:temp files*.tmp

备注:

要删除只读文件, 请首先移除它的只读属性. 例如:FileSetAttrib,-R,C:My 。

FileRemoveDir,DirName[,Recurse?]

FileRemoveDir,C:Download Temp,1

DirName

要删除的目录名

Recurse?(递归):

0(默认):不移除DirName中包含的文件和子目录。此时如果DirName不是空的,则不进行操作并且将ErrorLevel设置为1。

1:移除所有文件和子目录(类似于Windows命令“rmdir/S”)。

此参数可以为表达式,甚至是计算结果为真或假的表达式(因为真和假内部分别保存为1和0).

FileRecycle, FilePattern发送文件或目录到回收站,如果可行。

FileRecycle, C:temp files*.tmp

FilePattern

单个文件的名称或通配符模式,例如C:Temp*.tmp.如果未指定绝对路径则假定FilePattern在%A_WorkingDir%中.

要回收整个目录,请指定不包含末尾反斜线的目录名.

备注

实际使用SHFileOperation进行操作.如果由于文件过大而无法存放到回收站,那么此功能还会永久地删除文件;

另外:FileRecycleEmpty清空回收站

FileRecycleEmpty[,DriveLetter]

DriveLetter

如果省略,则清空所有驱动器的回收站.否则,请指定驱动器字母,例如C:

6、FileGetTime获取文件或文件夹的时间戳。

FileGetTime,OutputVar[,Filename,WhichTime]

FileGetTime, OutputVar, C:My ; 默认获取修改时间.

FileGetTime, OutputVar, C:My , C ; 获取创建时间.

OutputVar

用来保存获取的YYYYMMDDHH24MISS格式的日期时间的变量名.这个时间是您本地时间,不是UTC/GMT.

Filename

目标文件或文件夹的名称,如果未指定绝对路径则假定在%A_WorkingDir%中.如果省略,则使用最内层文件循环的当前文件.

WhichTime要获取的时间戳类别:

M=修改时间(此参数省略时这是默认的)

C=创建时间

A=上次访问时间

7、FileOpen打开文件.

file:=FileOpen(Filename,Flags[,Encoding])

Filename

要打开文件的路径

Flags

表示希望使用的访问模式的字符串,后面跟着其他选项(中间可以含有空格或tab);或数值标志的组合(总和).下表中描述了支持的值.

访问模式 (互斥的)

r

w

a

0

读取: 当文件不存在时失败.

1

写入:创建新文件,若文件已存在则覆盖它们。

2

追加: 如果文件不存在则创建新文件, 否则移动文件指针到文件末尾.

表示

Filename 是包装在对象中的文件句柄. 忽略共享模式标志. 当文件对象h

销毁时, 文件句柄 不会 自动关闭并且调用 Close 没有效果. 注意当

rw 3

读取/写入: 当文件不存在时创建新文件.

Filename 是到非搜寻设备 (例如管道或通信设备) 的句柄时不应该使用

Seek, Tell 和 Length.

行结束符 (EOL) 选项

`n 4 读取时把 `r`n 替换为 `n 而写入时把 `n 替换为 `r`n.

`r 8 读取时把单独的 `r 替换为 `n.

Encoding

当文件没有包含UTF-8或UTF-16字节顺序标记时文件I/O使用的代码页.

如果省略,则使用A_FileEncoding的当前值.

备注:

使用 if file 或 IsObject(file) 可以判断函数是否成功执行.

8、FileAppend

FileAppend[,Text,Filename,Encoding]

①追加文本

要追加到文件的文本。此文本可以包含换行符(`n)来开始新行。FileAppend,

Another line.`n, C:此外,一个长行可以使用延续片段的方法分成较短的几行.

如果Text为空,则创建一个文件名为Filename的空白文件(但如果文件已经存在,则更新其修改时间).

如果Text为%ClipboardAll%或之前接受了ClipboardAll赋值的变量,则用剪贴板的全部内容无条件覆盖Filename(即不需要FileDelete).

②追加文件名

要追加内容的文件名, 如果未指定绝对路径则假定在 %A_WorkingDir% 中.

备注:

要覆盖某个已存在的文件,请在FileAppend(文件附加)命令之前先使用FileDelete(文件删除)命令。例如:FileDelete, C:My DocumentsMy

Text

追加文本后目标文件会自动关闭(除非在文件读取/写入循环中以单参数模式使用FileAppend时).

追加模式的FileOpen()比FileAppend提供了更多的控制性并且允许文件保持打开状态而不是每次打开关闭文件.一旦以追加模式打开文件后,请使用(string)来追加字符串.文件对象通过RawWrite/RawRead或WriteNum/ReadNum还支持二进制I/O,然而FileAppend仅支持文本.

9、FileReadLine/FileReadLine

FileReadLine

读取文件指定行的文本并保存到变量。

FileReadLine, OutputVar, Filename, LineNum

OutputVar

用来存储获取的文本的变量名.

Filename

要访问的文件名,如果未指定绝对路径则假定在%A_WorkingDir%中.支持Windows和Unix格式;即文件的行结束符可以是回车和换行符(`r`n)或只是换行符(`n).

LineNum

要读取的行号(首行为1,第二行为2,依此类推).可以为表达式.

如果指定的行号大于文件的行数,则ErrorLevel被设置为1且OutputVar不会发生变化.当指定的行号为文件的最后一行且此行为空,同时不是以新行/CRLF结束时,也会发生这种情况.

备注:

如果行太长,那么应使用FileRead或文件读取循环。文件读取循环:逐行读取文本文件的内容,每次一行(比FileReadLine执行的更好)。Loop,Read,InputFile[,OutputFile],详见Loop。

FileRead读取文件的内容到变量。

FileRead,OutputVar,Filename

OutputVar

用来存储获取的数据的变量名.如果遇到问题(例如文件"在使用中")或不存在),则OutputVar被置空(此时ErrorLevel被设置为1).如果Filename是个空文件,则输出变量也被置空(此时ErrorLevel被置为0).

Filename

要读取的文件名,如果未指定绝对路径则假定在%A_WorkingDir%中.

选项:在文件名前面可以直接添加零个或多个下列字符串.在选项间使用单个空格或tab分隔.例如:*t *m5000 C:Log 。

*c:读取保存了ClipboardAll内容的文件或其他二进制数据.使用了*c选项时其他所有选项会被忽略.

*m1024:如果省略此选项,则读取整个文件,不过如果内存不足,则显示错误消息并退出线程(使用Try可以避免这种情况).否则,请把1024替换为十进制或十六进制表示的字节数.如果文件大于此字节数,那么只读取其前面部分.注:此选项可能导致最后一行以单独的回车符(`r)而不是`r`n结束.

*t:把所有的回车换行符(`r`n)替换为换行符(`n).不过,这种转换会降低性能而且往往不必要.例如,包含`r`n的文本已经是添加到Gui编辑控件的正确格式.同样地,FileAppend打开新文件时会检测是否含有`r`n;它知道按原样写入每对`r`n而不是把它转换成`r`r`n.最后,不论每行的结束符是`r`n或只是`n,后面的解析循环都可以正确执行:Loop,parse,MyFileContents,`n,`r。

*Pnnn:覆盖FileEncoding包含的默认编码设置,其中nnn必须是数值的代码页标识符.

10、FileSelectFile/FileSelectFolder显示一个通用文件/文件夹打开对话框给用户选择文件或文件夹

FileSelectFile,OutputVar[,Options,RootDirFilename,Prompt,Filter]

OutputVar

显示可以让用户打开或保存文件的标准对话框。

用来保存用户选择的文件名的变量名称.如果用户取消了对话框(即不想选择文件),则此变量被置空.

选项

如果省略,则它默认为零,相当于下面的任意选项都没有指定.

M:多选.指定字母M让用户可以使用shift-click,control-click或其他方法来选择多个文件.M后面可以跟着下面描述的数字(例如,M和M1都是有效的).要逐个提取文件,请参阅此页面底部的例子.

S:保存按钮.指定字母S让对话框显示保存按钮代替打开按钮.S后面可以跟

着下面描述的数字(或几个数的和)(例如,S和S24都是有效的).

即使同时省略M和S,仍然可以使用下面的数字.要让多个数字同时生效,请把它们加在一起.例如,要使用8和16,请指定数字24,文件必须存在,路径必须存在则为3.

1:文件必须存在

2:路径必须存在

8:提示创建新文件

16:提示覆盖文件

32:按原样选择快捷方式(.lnk文件)而不把它们解析为它们的目标.此选项也避免了通过文件夹快捷方式跳转到那个文件夹的情况.

如果使用"提示覆盖"选项而没有使用"提示创建"选项,则对话框会包含保存按钮而不是打开按钮.此行为是因为Windows的怪癖.

RootDirFilename

如果存在,则此参数包含下列的其中一个或两个:

RootDir:根(起始)目录,如果未指定绝对路径则假定为%A_WorkingDir%中的子文件夹.如果省略或为空,则起始目录将为默认值,这可能操作系统版本有关(它很可能是之前使用FileSelectFile时用户最近选择的目录)。v1.0.43.10+在WindowsXP/2003或早期系统中,还可以指定CLSID例如::{20d04fe0-3aea-1069-a2d8-08002b30309d}(即我的电脑),此时在CLSID后任何子目录都应该以反斜线结尾(否则在最后一个反斜线后的字符串会被解释为默认文件名,这点在下面说明)。

Filename:初始显示对话框时在编辑区域的默认文件名.只显示单独的文件名(不带路径).要让对话框正确显示,请确保不包含非法字符(例如/<|:").

示例:

C:My PicturesDefault Image ; 同时使用了RootDir和Filename.

C:My Pictures ; 只使用了RootDir.

My Pictures ; 只使用了RootDir,且它相对于当前工作目录.

My File ; 只使用了Filename(但如果已存在"My File"的文件夹,则它会被认为是RootDir).

Prompt

显示在窗口中用来提示用户操作的文本.如果省略或为空,则它默认为"Select File-%A_SCRIPTNAME%"(即当前脚本的名称).

Filter

表示希望对话框显示的文件类型.

例如:Documents(*.txt)

例如:Audio(*.wav;*.mp2;*.mp3)

如果省略,则过滤器默认为所有文件(*.*).在对话框"文件类型"菜单中,文本文档(*.txt)选项还是可用的.

否则,过滤器使用指示的字符串,不过在对话框的"文件类型"下拉列表中仍然提供了所有文件(*.*)选项.要在过滤器中包含多个文件扩展名,请使用分号分隔它们,如上所示.

备注

如果用户什么都没选(例如点击了取消),则OutputVar被置空.

如果没有启用多选,则OutputVar被设置为用户选择的单个文件的完整路径和名称.

如果使用了M选项(多选),则OutputVar被设置为项目列表,除了最后一个项目外的每个项目后都跟着换行符(`n).列表中的首个项目是包含所有选择文件的路径(此路径仅在为根目录时才以反斜线结尾,例如C:).其他项为选择的文件名(不带路径).例如:

C:My DocumentsNew Folder[这是下面所有文件所在的路径]

[这些是不含路径的文件名]

...等等。

如果启用了多选,则所有选择文件名的总长度被限制为64KB.不过这通常足够容纳几千个文件,如果超出此限制则OutputVar会被置空.

GUI窗口可以使用Gui+OwnDialogs的方法显示模态的文件选择对话框.模态对话框在其消失之前会阻止用户与GUI窗口进行交互.

FileSelectFolder,OutputVar[,StartingFolder,Options,Prompt]显示可以让用户选择文件夹的标准对话框。

OutputVar

用来保存用户选择的文件夹的变量名.如果用户取消了对话框(即不想选择文

件夹),则此变量被置空.如果用户选择了根目录(例如C:),则OutputVar会包含末尾的反斜线.如果不希望这样,则使用如下方法移除它:

FileSelectFolder,Folder

Folder:=RegExReplace(Folder,"$");移除默认的反斜线,如果存在。

StartingFolder

如果为空或省略, 则对话框的初始选择对象为用户的我的文档文件夹(或可能是我的电脑).可以指定CLSID文件夹例如::{20d04fe0-3aea-1069-a2d8-08002b30309d}(即我的电脑)来从特定的专用文件夹开始导航。

否则,此参数最常见的用法是星号后面紧跟着初始选择的驱动器或文件夹的绝对路径.例如,*C:会初始选择C驱动器。同样地,*C:MyFolder会初始选择这个特殊的文件夹。

星号表示允许用户从起始文件夹向上导航(接近根目录).如果没有星号,则强制用户在StartingFolder中选择文件夹(或StartingFolder自身)。省略星号的一个好处是最初StartingFolder会显示为树形展开状态,这样可以节省用户点击前面加号的时间.

如果使用星号,则向上导航可以被限制到桌面外的其他文件夹.在星号前加上最上级文件夹的绝对路径跟着一个空格或tab即可实现.在下面的例子中,将不允许用户导航到比C:My Folder更上级的文件夹(不过初始选择对象为C:My FolderProjects):

C:My Folder *C:My FolderProjects

选项

0: 禁用下面所有选项(不包括Windows2000,这里可能总是会显示"新建文件夹"按钮).

1(默认):提供允许用户新建文件夹的按钮.

增加2到上面的数字来提供允许用户输入文件夹名称的编辑区域.例如,此参数使用数值3表示同时提供编辑区域和"新建文件夹"按钮.

增加4到上面的数字来忽略BIF_NEWDIALOGSTYLE属性.增加4确保了FileSelectFolder即使在像WinPE或BartPE这样的预安装环境中也能正常工作.然而,这样阻止了"新建文件夹"按钮的出现,至少在Windows XP上是这样.

如果用户在编辑区域中输入了无效的文件夹名称,则OutputVar会被设置为

在导航树中选择的文件夹而不是用户输入的内容,至少在Windows XP上是这样.

此参数可以为表达式.

Prompt

显示在窗口中用来提示用户操作的文本.如果省略或为空,则它默认为"Select Folder-%A_SCRIPTNAME%"(即当前脚本的名称).

5、信息

FileGetShortcut检索指定快捷方式(.lnk文件)的相关信息,如目标文件等。

FileGetSize获取文件的大小信息。

FileGetTime获取文件或文件夹的修改日期。

FileGetVersion获取文件的版本信息。

FileSetAttrib(文件属性)和FileSetTime(文件时间):改变一个或多个文件的属性或其修改时间属性

FileSetTime更新一个或多个文件/文件夹的修改日期。支持使用通配符。

6、读取/写入

FileRead(文件读取):获得整个文件的内容并指配到某个变量中

FileReadLine读取文件中指定的一行的内容并保存文本到变量(variable)中。

Filereading Loop(文件循环读取):按序获得指定文件的每一行的内容

IniRead(Ini读取),IniWrite(Ini写入),和IniDelete(Ini删除):对标准格式的INI文件进行创建、存取和删除等操作

RegRead(注册表读取),RegWrite(注册表写入),RegDelete(注册表删除),和Registry Loop(注册表循环)

四、Win系列

WinWait,窗口标题,窗口文字,等待时间,排除标题,排除文字【等待指定窗口出现】

IfWinActive/IfWinNotActive 检查指定窗口是否存在并且已被激活

WinActivate 激活窗口

WinWaitActive 等待窗口被激活

(WinWait, { IfWinNotActive, WinActivate, WinWaitActive, })

(IfWinExist, { WinClose, WinWaitClose, })

Winwaitclose 等待窗口被关闭(窗口标题可用Windows Spy获取)

Winclose关闭指定窗口

Winkill关闭窗口

WinMove: 移动窗口和调整窗口大小

WinMenuSelectItem,标题,文字,选项按钮,子按钮,子按钮可以按下“文件-选项”等按钮,或下拉菜单

五、标题和语句

1、标题

 #NoTrayIcon隐藏托盘图标

 #IfWinActive/Exist可以实现环境敏感的热字符串,即要创建的热键在不同的窗口执行不同的操作

【#IfWinActive [, WinTitle, WinText]

ass Notepad::btw::by the way】

无参数

WinTitle

屏蔽掉热键和热字符串的上下文相关功能

定义目标窗口的名字。也可以使用ahk_class关键字指明目标窗口的类型(可以使用Window Spy工具获得)。后面也可以跟ahk_pid and ahk_id指定该窗口AHK进程号。

WinText 该参数必须是目标窗口内容的一个字符串子集(在Window Spy工具有显示)

Eg. #IfWinActive ahk_cl

#IfWinNotActive / #IfWinNotExist和上面相反

#Hotstring EndChars -()[]{}:;'"/,.?!`n `t自定义终止符

#CommentFlag 可以把默认的注释符 (分号) 改为其他字符或字符串

#SingleInstance 决定当脚本已经运行时是否允许它再次运行。

#SingleInstance [force|ignore|off]

FORCE表示会跳过对话框并自动替换旧实例,效果类似于Reload命令.

IGNORE表示会跳过对话框并让旧实例继续运行.换句话说,试图启动已经运行的脚本会被忽略.

OFF表示允许一个脚本同时运行多个实例.

如果省略此参数,那么会显示对话框,其中会询问是否让旧实例继续运行还是替换为新实例.

备注:包含热键,热字串,#Persistent,OnMessage()或Gui默认是单实例的(重复运行时会显示对话框与提示).而其他脚本默认允许多个实例.使用前面描述的方法可以禁用或修改这种行为.

2、If语句

if (var1>var2) ;圆括号的出现意味着if陈述句包含了表达式

If var [not] between检查某个变量的值是否在数字上或字母上居于两个值之间(包括这两个值)。

If var [not] in/contains MatchList检查某个变量的值是否不匹配列表中的项目。

IfEqual/IfNotEqual检查某个变量的值是否和指定的值相等。等价语法:if

var =值|if var <>值

IfInString/InStr()检查某个变量是否含有指定的字串。

【if InStr(MyVar, "12") MsgBox 数字为12.】

IfExist/FileExist()检查指定的文件或文件夹是否存在。IfGreater/IfGreaterOrEqual检查某个变量的值是否大于指定的值。等价语法:if var>值|ifvar>=值

IfLess/IfLessOrEqual检查某个变量的值是否小于指定的值。等价语法:if

var <值 | if var <= 值

IfMsgBox检查最近的对话框(MsgBox)中哪个按钮被用户按下。

IfWinActive/IfWinNotActive检查指定的窗口是否存在并且处于激活状态(最顶层窗口)。

IfWinExist/IfWinNotExist检查指定窗口是否存在。

If var is [not] type检查某个变量的值是否纯数字或大写字母等等。

说明:表达式中的变量名称不用包围在百分号中(伪数组和其他的双重引用除外)。所以, 为了与变量区别, 原义的字符串必须用双引号包围. 例如:

if (CurrentSetting > 100 or FoundColor <> "Blue")

如果原义字符串就带有引号,那么就用指定两个连续的引号,如:""Blue""

空字符串:if (MyVar <> "")或者if MyVar=不可以加双引号

3、Loop语句(循环)

Loop 3

{

MsgBox 此对话框将显示三次!

}

Loop

{

if ;

break;

Do; 否则

}

Loop

{

...

if var > 25

break

...

if var <= 5

continue

}

; 从内嵌循环内部退出到外层循环.

outer:

Loop 3

{

x := A_Index

Loop 3

{

if (x*A_Index = 6)

break outer ; 等同于 break 2 或 goto break_outer.

MsgBox %x%,%A_Index%

}

}

break_outer: ; 用于 goto 命令.’

File-reading/writing loop(文件循环读取/写入): 检索文本文件的内容,每次一段。也可以用来转换某个文件到不同的格式或修改为一段接一段的排版格式。另外还可以用来检索符合某个条件的文段。

Files and folders loop(文件与文件夹循环): 对某个文件夹中的文件和文件夹进行检索,每次一个文件/文件夹。这样就可以对符合条件的文件或文件夹进行操作。

Parsing loop(分解循环):对某个字串的子字串进行检索,每次一个。这使得类似“Red,Green,Blue”这样的字串可以方便地分为三个部分。

Registry loop:对指定注册表的子键进行检索,每次一个项目。

Continue 跳过当前循环(loop)反复的余下部分并开始新的循环。仅在循环(loop)中有效

六、实例

1、自动补全括号、引号

:*:(::(){left}

:*:[::[]{left}

:*:"::""{left}

:*:'::''{left}

:*:<::<>{left}

:*:《::《》{left}

:*:{::{{}{}}{left}

:*b0:``::{``}{left}

2、按键延迟

#1::

SetKeyDelay,50

send {alt}styi

return

3、多个按键对应一个命令

^Numpad0::

^Numpad1::

MsgBox 按下Control+Numpad0或Control+Numpad1都会显示此信息。

4、屏蔽按键

RWin::return

5、自动添加新定义的热字串

#h::

AutoTrim Off ; 保留剪贴板中引头和结尾部分的空白字符

ClipboardOld = %ClipboardAll%

Clipboard = ; 这里必须是空值,以清空剪贴板

Send ^c ;

ClipWait 0.5 ;直到剪贴板中含有数据为止

; 用 `n 替换 CRLF 和/或 LF 以便使用"send-raw"热字串

; The same is done for any other characters that might otherwise

; be a problem in raw mode:

StringReplace, Hotstring, Clipboard, ``, ````, All ;

先完成这一替换以避免干扰到下面的

StringReplace, Hotstring, Hotstring, `r`n, ``r, All ; 在微软的Word中使用`r比使用`n更有效

StringReplace, Hotstring, Hotstring, `n, ``r, All

StringReplace, Hotstring, Hotstring, %A_Tab%, ``t, All

StringReplace, Hotstring, Hotstring, `;, ```;, All

Clipboard = %ClipboardOld% ; 还原此前剪贴板的内容。

; 移动InputBox控件的插入点(光标)到合适位置:

SetTimer, MoveCaret, 10

; 显示InputBox控件,提供默认热字串:

InputBox, Hotstring, 添加热字串, 请在下面显示的文本输入框中键入缩写词。您也可以在这里编辑替换文本。`n`n例如: :R:btw`::by the way,,,,,,,, :R:`::%Hotstring%

if ErrorLevel 0 ; 如果用户按下取消按钮则返回

return

IfInString, Hotstring, :R`:::

{

MsgBox 您没有提交缩写词,热字串添加失败。

return

}

;否则就添加新的热字串并重新加载此脚本:

FileAppend, `n%Hotstring%, %A_ScriptFullPath% ; 在前面添加`n,以防文件尾部缺少空行

Reload

Sleep 200 ; 如果成功,前面的重新加载将会在延时期间关闭此实例,所以下面这些就不会执行

MsgBox, 4,, 看来刚才添加的热字串格式不正确,您希望打开脚本编辑吗?注意,无效的热字串就在脚本的最下端。

IfMsgBox, Yes, Edit

return

MoveCaret:

IfWinNotActive, 添加热字串

return

; 否则,移动InputBox控件的插入点到用户将要键入缩写词的地方:

Send {Home}{Right 3}

SetTimer, MoveCaret, Off

Return

6、自动发邮件

Run, mailto:someone@

7、数学运算

要进行数学运算,要使用冒号等号符来把表达式的运算结果指配到一个变量中,例如:

NetPrice:=Price*(1-Discount/100)

8、快捷切换窗口

MButton::AltTabMenu

WheelDown::AltTab

WheelUp::ShiftAltTab

9、保存文件按钮

RControl:: ; 这是右边的Control键

IfWinActive, 无标题 - 记事本

{

WinMenuSelectItem, , , 文件, 保存 ; 保存当前文件

}

else IfWinActive, 计算器

{

Send, ^c!{tab}^v ; 复制计算器显示的值到之前曾激活的窗口(记事本)

}

Return

10、变量的赋值

要把字符串或数字保存到变量中,有两种方法:传统方法使用等号运算符(=)来指定没有加引号的原义字符串或包围在百分号中的变量;表达式方法使用冒号等号运算符(:=)来保存数字,加引号的字符串和其他类型的表达式

两种方法:

方法1:使用“=”定义数字、没带引号的字符串和带%的变量

MyNumber = 123

MyString = This is a literal string.

CopyOfVar = %Var% ;和=运算符一起使用时,需要使用百分号来获取变量的内容

方法2:使用“:=”定义数字,带引号的字符串和不带%的变量

MyNumber := 123

MyString := "This is a literal string."

CopyOfVar :=Var ;和前面段落中与其作用相同的语句不同,百分号不和:=运算符一起使用

那么,变量的清除就可以写成:

MyVar =

MyVar := ""

11、变量的引用

方法1:

Var = 123

MsgBox The value in the variable named Var is %Var%.

方法2:

var := 123

MsgBox % "The value in the variable named Var is ".Var. "." ;使用句点连接两个字符串。

12、检查剪贴板内容

clipboard = ; Empty the clipboard

Send, ^c

ClipWait, 2

if ErrorLevel

{

MsgBox, The attempt to copy text onto the clipboard failed.

return

}

MsgBox, clipboard = %clipboard%

return

13、设置图标【Menu TRAY】

IfExist,;记得找个图标文件放在和脚本相同的文件夹里,并重命名为 。

{

MenuTRAY,Icon,;这句会把作为图标。AHK的脚本是大小写不分的。

}

14、InputBox的引用

#t::

InputBox,time,请输入一个时间(单位是秒)

time:=time*1000

;如果一个变量要做计算的话,一定要像这样写,和平常的算式相比,多了一个冒号。sleep的时间是按照千分之一秒算的,这里乘以1000就变成秒了。

Sleep,%time%

MsgBox水开啦

return

15、Win窗口的打开与激活

^!#a::

IfWinNotExist,xxxxx–Becky!

Run,c:SystemToolsBecky_

Else

{

IfWinActive,xxxxx–Becky!

becky窗口是否激活

WinMinimize,

小化

Else

WinActivate,

激活

}

Return

或者也可以这样:

+!l::

IfWinExistLingoes

{

WinActivate

}

Else

{

Run %PROGRAMDIR%Lingoes

WinWaitLingoes

WinActivate

}

return

16、按键延迟

#1::

SetKeyDelay, 50

send {alt}styi

Return

;判断becky是否启动

;没启动则启动becky

;启动的话则判断 ;激活的话就最 ;没激活的话就

按下 Control-Alt-S 会让系统以为您按下了 Control-Alt-Delete (由于系统对 Ctrl-Alt-Delete 的侵略性检测). 要变通解决此问题, 请使用

KeyWait 来等待按键释放; 例如:

^!s::

KeyWait Control

KeyWait Alt

Send {Delete}

return

17、QuickStart

在D盘新建一个文件夹,命名为QuickStart,现在把要启动的程序都建一个快捷方式在里面。然后:

PROGRAMDIR:= "D:QuickStart"

#n::run % PROGRAMDIR %QQ

18、在任务栏上滚动鼠标来调节音量

#If MouseIsOver("ahk_class Shell_TrayWnd")

WheelUp::Send {Volume_Up}

WheelDown::Send {Volume_Down}

MouseIsOver(WinTitle) {

MouseGetPos,,, Win

return WinExist(WinTitle . " ahk_id " . Win)

}

19、设置按键后释放

如果Numpad0等成为前缀键,会让 Numpad0 在被按下时失去了它原有的功能. 为了避免此问题, 脚本中可以配置 Numpad0 执行新的动作, 例如下列热键的其中一个:

Numpad0::WinMaximize A ; 最大化活动/前端窗口.

Numpad0::Send {Numpad0} ; 让 Numpad0 释放时产生 Numpad0 键击. 请参阅下面的注释.

使用上面的其中一个自定义组合热键可以在释放Numpad0时执行指定的动作,但仅在您之前按住Numpad0时没有按其他任何按键的情况下。在v1.1.14+中,也可以在热键使用时加~前缀来避免这种行为。

20、禁用或改变一个应用程序的非全局热键【$】

要禁用或改变一个应用程序的非全局热键 (即仅对那个应用程序的窗口有效的快捷键), 请参考下面的例子, 其中仅禁用了记事本的 Control+P (打印),

而让它对其他所有窗口保持有效:

$^p::

IfWinActive ahk_class Notepad

return ; 即不进行操作, 这样让 Control-P 在记事本中失效.

Send ^p

Return

21、转换时间戳

转换 YYYYMMDDHH24MISS 时间戳到指定的日期/时间格式

FormatTime, OutputVar [, YYYYMMDDHH24MISS, Format]

22、复制所有文件和文件夹

ErrorCount := CopyFilesAndFolders("C:My Folder*.*", "D:Folder to receive all files & folders")

if ErrorCount <> 0

MsgBox %ErrorCount% files/folders could not be copied.

CopyFilesAndFolders(SourcePattern, DestinationFolder, DoOverwrite = false)

; 复制匹配 SourcePattern 的所有文件和文件夹到 DestinationFolder 文件夹中且

; 返回无法复制的文件/文件夹的数目.

{

; 首先复制所有文件 (不是文件夹):

FileCopy, %SourcePattern%, %DestinationFolder%, %DoOverwrite%

ErrorCount := ErrorLevel

; 现在复制所有文件夹:

Loop, %SourcePattern%, 2 ; 2 表示 "只获取文件夹".

{

FileCopyDir, %A_LoopFileFullPath%, %DestinationFolder%%A_LoopFileName%, %DoOverwrite%

ErrorCount += ErrorLevel

if ErrorLevel ; 报告每个出现问题的文件夹名称.

MsgBox Could not copy %A_LoopFileFullPath% into %DestinationFolder%.

}

return ErrorCount

}

23、选择文件夹复制到选择的文件夹

;提示您复制文件夹的可运行脚本.

FileSelectFolder, SourceFolder, , 3, Select the folder to copy

if SourceFolder =

return

; 否则继续.

FileSelectFolder, TargetFolder, , 3, Select the folder IN WHICH to create the duplicate folder.

if TargetFolder =

return

; 否则继续。

MsgBox, 4, , A copy of the folder "%SourceFolder%" will be put into "%TargetFolder%". Continue?

IfMsgBox, No

return

SplitPath, SourceFolder, SourceFolderName ; 仅从它的完整路径中提取文件夹名称.

FileCopyDir, %SourceFolder%, %TargetFolder%%SourceFolderName%

if ErrorLevel

MsgBox The folder could not be copied, perhaps because a folder of that name already exists in "%TargetFolder%".

return

24、写入和读取文件

; 示例: 这是个可运行脚本, 它写入一些文本到文件, 然后从文件读取回内存.

; 它提供了与此 DllCall 示例同样的功能.

FileSelectFile, FileName, S16,, Create a new file:

if (FileName = "")

return

file := FileOpen(FileName, "w")

if !IsObject(file)

{

MsgBox Can't open "%FileName%" for writing.

return

}

TestString := "This is a test string.`r`n" ; 通过这种方式写入内容到文件时, 要使用 `r`n 而不是 `n 来开始新行.

(TestString)

()

; 现在已经把内容写入文件了, 重新把它们读取回内存中.

file := FileOpen(FileName, "r-d") ; 读取文件 ("r"), 共享除删除 ("-d") 外的所有访问权限

if !IsObject(file)

{

MsgBox Can't open "%FileName%" for reading.

return

}

CharsToRead := StrLen(TestString)

TestString := (CharsToRead)

()

MsgBox The following string was read from the file: %TestString%

七、工具

1、可以用AutoSciptWriter进行录制按键

2、可以用SmartGUI Creator创建GUi窗口

1)选项介绍

Button(按钮),Checkbox(复选框),ComboBox(选择框),DateTime(日期),DropdownList(下拉列表),Edit(编辑框),GroupBox(组框),Hotkey(快捷键),

ListBox(列表框),ListView(项目显示),MonthCal(月历),Picture(图片),Progress(进度条),Radio(单选框),Slider(拖动条),

Tab(标签),Text(文本),Updown(上下箭头)。

2)GUI Stealer(偷窃者)

选中它后会提示你激活你想要“偷窃”的窗口,按下F12进行偷窃或按Esc退出。成功后会看到主窗口上居然把那窗口的界面(包括菜单、按钮、文本等控件)“复制”过来了

3、可以用Windows Spy获取测定点击位置的X轴和Y轴坐标,窗口标题,按钮名称等

八、其他

AutoTrim Off 保留剪贴板中引头和结尾部分的空白字符

变量名不区分大小写 (例如Var等同于var). 变量名可以含有多达 253 个字符, 并且可以由字母, 数字以及后面的标点组成: # _ @ $

考虑到命名的惯例, 通常在命名变量时最好仅使用字母, 数字和下划线

try

{

FileCopy, , C:folder

FileDelete, C:

}

catch

MsgBox An error occured!

如果颚化符 (~) 和 前缀键 一起使用, 即使只是一次, 那么其中的前缀键总是会被发送到活动窗口. 例如, 在下面的两个热键中, 活动窗口都会接收到右键点击, 尽管只是其中一个热键使用了颚化符:

~RButton & LButton::MsgBox You pressed the left mouse button while holding down the right.

RButton & WheelUp::MsgBox You turned the mouse wheel up while holding down the right button.