autoit 脚本介绍 联系客服

发布时间 : 星期一 文章autoit 脚本介绍更新完毕开始阅读8457ba22a5e9856a5612606b

高级篇、 AU3 中的宏

什么是宏,不要被这个术语吓到了,宏的意思简单的来说,就是一些系统预先命名好的常量。写程序的过程中可以使用这些宏所代表的数据,但是不可对这些宏进行赋值操作。

常用的宏有如下这些——

@AppDataCommonDir,公共 Application Data 文件夹所在路径 @AppDataDir,当前用户 Application Data 文件夹所在路径

@ComSpec, %comspec% 的 值 , 指 定 的 第 二 个 命 令 解 释 程 序(SPECified secondary COMmand interpreter),主要用于命令行使用, 如. Run(@ComSpec & \ @CR,回车符,用于换行 @LF,换行符,用于换行

@CRLF,@CR+@LF,回车换行符,用于换行

@DesktopCommonDir,公共 Desktop 文件夹路径(桌面) @DesktopDir,当前用户 Desktop 文件夹路径(桌面) @DesktopHeight,桌面高度(像素) (垂直分辨率) @DesktopWidth,桌面宽度(像素) (水平分辨率) @DesktopDepth,像素颜色位深度(如 32 Bit) @DesktopRefresh,屏幕刷新率.(如 75 HZ)

@DocumentsCommonDir,公共 Documents 文件夹路径(我的文档) @FavoritesCommonDir,公共 Favorites 文件夹路径 @FavoritesDir,前用户的 Favorites 文件夹路径

@HomeDrive,当前用户主目录所在的驱动器号(主要用于确定系统所在分区) @MyDocumentsDir,我的文档的路径.

@OSServicePack,系统已安装的 Service pack 信息,比如\,若是过低版本的Windows 则可能返回 \ @OSVersion,返回操作系统的版本,如: \\\\\\\

@ProgramFilesDir,返回 Program Files 文件夹路径.

@ProgramsCommonDir,「开始」菜单\\程序目录所在路径(例:C:\\Documents and Settings\\All Users\\ 「开始」菜单\\程序)公共用户

@ProgramsDir,「开始」菜单\\程序 目录所在路径(例:C:\\Documents and Settings\\All Users\\「开始」菜单\\程序) 当前用户 @ScriptDir,脚本所在目录. (不包含反斜杠符号\ @ScriptName,当前运行的脚本的长文件名

@ScriptFullPath,等价于 @ScriptDir & \

@StartMenuCommonDir,公共用户「开始」菜单 目录所在路径(例:C:\\Documents and Settings\\AllUsers\\「开始」菜单) @StartMenuDir,当前用户的 「开始」菜单目录所在路径

@StartupCommonDir,公共用户的 启动 目录所在路径(例:C:\\Documents and Settings\\All Users\\ 「开始」菜单\\程序\\启动)

@StartupDir,当前用户的启动目录所在路径

@WindowsDir,Windows 文件夹所在路径(例:C:\\WINDOWS)

以上的宏只是所有 AU3 的宏中比较常用的一部分,如果您想了解更多关于 AU3 宏的信息,请又一次回去查阅 AU3 帮助文档。:lol

其实大家可能也看出来了,宏有点类似 Windows 的环境变量,当然,其性能和多样性远远超过Windows 环境

变量。

讲到这里,关于 AU3 的基础知识就给大家介绍完了。以后我们也可以亲手写一些简单的小程序来满足我们对自动化操作的需要,同样,当我们再碰到高手们写的 AU3 源代码终于也可以看懂一些了。

对于编程来说,其实无论是 AU3 还是其他的,如果想熟练掌握仅仅靠背诵这些语法、函数、宏是不管用的,不过如果你不知道这些语法、函数、宏也是更行不通的。想熟练使用一样东西,就要经常使用它。一开始写程序是有点小困难,但这只是因为您对编程还不熟悉,并不代表着您不能掌握编程。编程很大程度上靠的不是智力,而是一个人的毅力!祝大家都能熟练掌握AU3,多多写出属于自己的脚本!

分享0 收藏1 青春见证辉煌,热血铸就历史!好为人师前请不要不求甚解! 举报

R.E.C--F22 R.E.C--F22 当前在线 最后登录2011-8-11 兵团大校

组织部长[B-01107-T]

军饷704 元功勋8094 点阅读权限150帖子4398UID14786

串个门 加好友 打招呼 发消息 沙发 发表于 2009-8-23 15:29:40 |只看该作者 Autoit3常见问题(转载)

Q1. 我怎样才能DEBUG我的脚本?

A1. 这个问题有无数个答案,不过最有效的还是从SciTE4AutoIt3开始,大多数人都使用这个软件来编写脚本。在debug方面SciTE有下面几条优势:

Syntax会即时高亮不符合语法的语句,这会让用户更容易发现脚本里的错误 内建在工具菜单里的Syntax可以一次检测脚本里的全部错误

内置的代码清理程序可以让代码变得更整齐、更具有可读性,它同时也能修正错误拼写的函数和变量

A2. 你也能通过添加下面的代码来在任何一台电脑上debug你的脚本: Func dbg($msg)

DllCall(\EndFunc

然后,你可以在需要debug的地方加上下面的代码: dbg(\

这个方法对用户来说更加透明,同时也只对DebugView from SysInternals之类的程序可见。这个方法在那些没有安装

SciTE的机器上更具有优势。

Q2.我怎样才能打开那些非exe格式的文件[.txt, .msi, .pdf, .jpg 之类]? [或] 我怎样才能用默认的浏览器打开网页?

A1. 这也就是为什么我们创建ShellExecute函数.下面有一个例子: ShellExecute(\你也能像这样打开一个网址:

ShellExecute(\

如果文件的右键菜单里有打印选项,你就可以这样用AutoIt打印文件: ShellExecute(\

如果你希望暂停脚本直到程序结束,你可以使用ShellExecuteWait函数,它们的运行参数是相同的.

Q3. 我怎样才能让脚本只运行一个进程?

A1. 你可以使用_Singleton函数来阻止脚本的副本运行,下面有一个实例: #include

_Singleton(\

这样如果脚本检测到自己已经启动就会立即退出,如果你只是想简单地知道脚本是否已经运行,你可以使用下面的代码: #include

If _Singleton(\

; We know the script is already running. Let the user know.

MsgBox(0, \Name\\script is already running. Using multiple copies of this script at the same breaks the [(UltimaCoder)] License!\ Exit Endif

Q4. 我怎样才能让脚本作为系统服务启动?

这也是一个有多个答案的问题

A1.如果你只想在自己的电脑上安装服务,最简单的方法是使用Pirmasoft RunAsSvc.这个程序可以方便地添加/删除系统服务.

A2.如果你想让服务能在任何电脑上都能安装,你可以使用SRVANY.EXE和ServiceControl.au3,像这样安装服务: #include \$servicename = \

_CreateService(\

RegWrite(\& $servicename & \\\@ScriptFullPath)

或者使用下面的代码删除服务: #include \$servicename = \_DeleteService(\

Q5. 我怎样启动/停止服务?

A1.有两个函数集能帮助你控制服务:

SumTingWong制作的ServiceControl.au3 ,包含的函数有:

_StartService() _StopService() _ServiceExists() _ServiceRunning() _CreateService() _DeleteService()

CatchFish制作的_NTServices.au3,包含的函数有: _ServiceStart() _ServiceStop() _ServiceStatus() _ServicePause()

Q6. 我怎样在复制文件时显示进度条?

A1.函数集ShellFileOperation.au3能完成这个操作:

Q7. 我怎样让快捷键只在自己的GUI起作用?

A1. 在更好的方法出现之前,最简单的方法是使用下面的代码: #include

HotKeySet(\$gui = GuiCreate(\GuiCtrlCreateLabel(\GuiSetState() While 1

$msg = GUIGetMsg()

If $msg = $GUI_EVENT_CLOSE Then ExitLoop Wend

Func catchguikey()

Local $opt = Opt(\ If WinGetHandle(\ If @HotKeyPressed = \ ;Do something here ToolTip(\ Sleep(1000) ToolTip(\ EndIf