<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title>Hopol's Blog</title>
		<link>http://blog.18883.com/blog/</link>
		<description>我像一顆棋子,被上帝抓在手中,我看到她的眼卻廳不到她的心.</description>
		<copyright>Copyright (C) 2004 Security Hopol All Rights Reserved.</copyright>
		<generator>Hopol's BLOG</generator>
		<lastBuildDate>Fri, 05 Dec 2008 09:28:22 +0000</lastBuildDate>
		<ttl></ttl>
		<item>
			<guid>http://blog.18883.com/blog/408</guid>
			<title>用au3编写网管维护工具教程 (图文)</title>
			<author>hopol</author>
			<description><![CDATA[<p>首先要先设计个维护面板<br />
<br />
<a href="http://blog.18883.com/blog/images/283/" rel="lightbox" title="Hopol's Blog" target="_blank"><img src="http://blog.18883.com/blog/attachments/date_200803/thumb_0b5aef11453fae3f5a43c695817bf5c0.jpg" border="0" alt="大小: 46.5 K&#13;尺寸: 150 x 135&#13;浏览: 83 次&#13;点击打开新窗口浏览全图" width="150" height="135" /></a><br />
<br />
<a href="http://blog.18883.com/blog/images/284/" rel="lightbox" title="Hopol's Blog" target="_blank"><img src="http://blog.18883.com/blog/attachments/date_200803/thumb_3fd06a217e9ebcce5ef17daf26d05b23.jpg" border="0" alt="大小: 26.95 K&#13;尺寸: 150 x 44&#13;浏览: 55 次&#13;点击打开新窗口浏览全图" width="150" height="44" /></a><br />
<br />
<a href="http://blog.18883.com/blog/images/285/" rel="lightbox" title="Hopol's Blog" target="_blank"><img src="http://blog.18883.com/blog/attachments/date_200803/thumb_5a105e7a693d2103e226465bd56221fa.jpg" border="0" alt="大小: 26.52 K&#13;尺寸: 150 x 104&#13;浏览: 37 次&#13;点击打开新窗口浏览全图" width="150" height="104" /></a><br />
<br />
<a href="http://blog.18883.com/blog/images/286/" rel="lightbox" title="Hopol's Blog" target="_blank"><img src="http://blog.18883.com/blog/attachments/date_200803/thumb_2a6e85319bc7bcabf5c894d40405bfd3.jpg" border="0" alt="大小: 25.44 K&#13;尺寸: 150 x 40&#13;浏览: 30 次&#13;点击打开新窗口浏览全图" width="150" height="40" /></a><br />
<br />
<a href="http://blog.18883.com/blog/images/287/" rel="lightbox" title="Hopol's Blog" target="_blank"><img src="http://blog.18883.com/blog/attachments/date_200803/thumb_30dd2715a6d4d9f7f57e44020a81e419.jpg" border="0" alt="大小: 14.48 K&#13;尺寸: 150 x 62&#13;浏览: 24 次&#13;点击打开新窗口浏览全图" width="150" height="62" /></a><br />
<br />
<a href="http://blog.18883.com/blog/images/288/" rel="lightbox" title="Hopol's Blog" target="_blank"><img src="http://blog.18883.com/blog/attachments/date_200803/thumb_e502f9f49aa84e23eb69bb2d2004c016.jpg" border="0" alt="大小: 28.25 K&#13;尺寸: 150 x 120&#13;浏览: 34 次&#13;点击打开新窗口浏览全图" width="150" height="120" /></a><br />
<br />
<a href="http://blog.18883.com/blog/images/289/" rel="lightbox" title="Hopol's Blog" target="_blank"><img src="http://blog.18883.com/blog/attachments/date_200803/thumb_4fc7640ae8f90f8302325a1c9d9dab7d.jpg" border="0" alt="大小: 60.44 K&#13;尺寸: 150 x 118&#13;浏览: 40 次&#13;点击打开新窗口浏览全图" width="150" height="118" /></a><br />
<br />
设计完以后 把窗口生成器生成的代码 复制到SCITE编辑器里 红色部分就是需要我们写上去的代码 <br />
在SCITE里新建一个脚本 然后复制进去 <br />
#include &lt;GUIConstants.au3&gt; <br />
#include &lt;Process.au3&gt; <br />
<br />
#Region ### START Koda GUI section ### Form= <br />
$Form1 = GUICreate(&quot;维护工具&quot;, 251, 81, 297, 252) <br />
$Button1 = GUICtrlCreateButton(&quot;控制面版&quot;, 20, 8, 75, 25, 0) <br />
$Button2 = GUICtrlCreateButton(&quot;显示属性&quot;, 20, 48, 75, 25, 0) <br />
$Button3 = GUICtrlCreateButton(&quot;系统属性&quot;, 132, 8, 75, 25, 0) <br />
$Button4 = GUICtrlCreateButton(&quot;进程管理&quot;, 132, 48, 75, 25, 0) <br />
GUISetState(@SW_SHOW) <br />
#EndRegion ### END Koda GUI section ### <br />
<br />
While 1 <br />
$nMsg = GUIGetMsg() <br />
Switch $nMsg <br />
Case $GUI_EVENT_CLOSE <br />
Exit <br />
Case $Button1 <br />
RunWait(&quot;c:\windows\system32\control.exe&quot;); 打开控制面板 <br />
<br />
Case $Button2 <br />
_rundos(&quot;C:\windows\system32\desk.cpl&quot;);打开显示属性 <br />
<br />
Case $Button3 <br />
_RunDOS(&quot;c:\windows\system32\sysdm.cpl&quot;);打开系统属性 <br />
<br />
Case $Button4 <br />
RunWait(&quot;c:\windows\system32\taskmgr.exe&quot;);打开任务管理器 <br />
EndSwitch <br />
WEnd <br />
<br />
<br />
============================================================================= <br />
留给新手的反思 为什么调用exe文件 用runwait 调用cpl文件用 _rundos?? <br />
如果用别的方法可不可以？<br />
<br />
<a href="http://blog.18883.com/blog/images/290/" rel="lightbox" title="Hopol's Blog" target="_blank"><img src="http://blog.18883.com/blog/attachments/date_200803/thumb_fd46b4686d91a975ac518f0593ff82cf.jpg" border="0" alt="大小: 14.14 K&#13;尺寸: 150 x 25&#13;浏览: 13 次&#13;点击打开新窗口浏览全图" width="150" height="25" /></a><br />
<br />
<a href="http://blog.18883.com/blog/images/291/" rel="lightbox" title="Hopol's Blog" target="_blank"><img src="http://blog.18883.com/blog/attachments/date_200803/thumb_2a61de3ffb3dc2302d2e3be429fa9012.jpg" border="0" alt="大小: 13.74 K&#13;尺寸: 150 x 54&#13;浏览: 19 次&#13;点击打开新窗口浏览全图" width="150" height="54" /></a><br />
<br />
<a href="http://blog.18883.com/blog/images/292/" rel="lightbox" title="Hopol's Blog" target="_blank"><img src="http://blog.18883.com/blog/attachments/date_200803/thumb_483755e643d8e875c8c8cc5e3843ff7a.jpg" border="0" alt="大小: 20.33 K&#13;尺寸: 150 x 78&#13;浏览: 20 次&#13;点击打开新窗口浏览全图" width="150" height="78" /></a><br />
<br />
<a href="http://blog.18883.com/blog/images/293/" rel="lightbox" title="Hopol's Blog" target="_blank"><img src="http://blog.18883.com/blog/attachments/date_200803/thumb_270ea6c990eefbddf306e14aef970d46.jpg" border="0" alt="大小: 14.05 K&#13;尺寸: 150 x 52&#13;浏览: 24 次&#13;点击打开新窗口浏览全图" width="150" height="52" /></a><br />
<br />
<font color="#ff0000" size="4"><strong><br />
网管维护工具</strong></font><br />
<hr />
#include &lt;GUIConstants.au3&gt; <br />
#include &lt;Process.au3&gt; <br />
<br />
#Region ### START Koda GUI section ### Form= <br />
$Form1 = GUICreate(&quot;维护工具测试1&quot;, 315, 204, 278, 206) <br />
$Button1 = GUICtrlCreateButton(&quot;系统属性&quot;, 8, 8, 75, 25, 0) <br />
$Button2 = GUICtrlCreateButton(&quot;显示属性&quot;, 8, 56, 75, 25, 0) <br />
$Button3 = GUICtrlCreateButton(&quot;进程管理&quot;, 8, 104, 75, 25, 0) <br />
$Button4 = GUICtrlCreateButton(&quot;控制面板&quot;, 112, 8, 75, 25, 0) <br />
$Button5 = GUICtrlCreateButton(&quot;命令行&quot;, 112, 56, 75, 25, 0) <br />
$Button6 = GUICtrlCreateButton(&quot;注册表&quot;, 112, 104, 75, 25, 0) <br />
$Button7 = GUICtrlCreateButton(&quot;Msconfig&quot;, 216, 56, 75, 25, 0) <br />
$Button8 = GUICtrlCreateButton(&quot;音量控制&quot;, 216, 104, 75, 25, 0) <br />
$Button9 = GUICtrlCreateButton(&quot;策略组&quot;, 216, 8, 75, 25, 0) <br />
$Input1 = GUICtrlCreateInput(&quot;&quot;, 8, 148, 121, 25) <br />
$Button10 = GUICtrlCreateButton(&quot;运行&quot;, 144, 148, 43, 25, 0) <br />
$Button11 = GUICtrlCreateButton(&quot;时间日期&quot;, 216, 144, 75, 25, 0) <br />
GUICtrlCreateLabel(&quot;&quot;, 184, 176, 4, 4) <br />
$Label1 = GUICtrlCreateLabel(&quot;蝶-友川医夫2007/11&quot;, 176, 186, 132, 17) <br />
GUISetState(@SW_SHOW) <br />
#EndRegion ### END Koda GUI section ### <br />
<br />
While 1 <br />
$nMsg = GUIGetMsg() <br />
Switch $nMsg <br />
Case $GUI_EVENT_CLOSE <br />
Exit <br />
Case $Button1 <br />
_RunDOS(@SystemDir &amp;&quot;\sysdm.cpl&quot;);打开系统属性 <br />
Case $Button2 <br />
_RunDOS(@SystemDir &amp;&quot;\desk.cpl&quot;);打开显示属性 <br />
Case $Button3 <br />
Run(@SystemDir &amp;&quot;\taskmgr.exe&quot;);打开任务管理器 <br />
Case $Button4 <br />
Run(@SystemDir &amp;&quot;\control.exe&quot;);打开控制面板 <br />
Case $Button5 <br />
Run(@SystemDir &amp;&quot;\cmd.exe&quot;);打开命令行 <br />
Case $Button6 <br />
Run(@WindowsDir &amp;&quot;\regedit.exe&quot;);打开注册表 <br />
Case $Button7 <br />
Run(&quot;C:\WINDOWS\pchealth\helpctr\binaries\Msconfig.exe&quot;);打开msconfig <br />
Case $Button8 <br />
Run(@SystemDir &amp;&quot;\Sndvol32.exe&quot;);打开音量控制程序 <br />
Case $Button9 <br />
ShellExecute(@SystemDir &amp;&quot;\gpedit.msc&quot;);打开策略组 另一种写法Run(@ComSpec&amp;' /c gpedit.msc',@SystemDir,@SW_HIDE) <br />
Case $Button10 <br />
Run(@ComSpec &amp;&quot; /c&quot;&amp;GUICtrlRead($input1));这里是这个作品的关键 读取文本框里的内容然后运行 <br />
Case $Button11 <br />
_RunDOS(@SystemDir &amp;&quot;\timedate.cpl&quot;);打开时间日期 <br />
Case $Label1 <br />
EndSwitch <br />
WEnd <br />
<hr />
</p>
<p>说明：<br />
au3的库文件 @systemdir==windows\systemdir @windowsdir==windows&nbsp;<br />
<br />
<a href="http://blog.18883.com/blog/images/294/" rel="lightbox" title="Hopol's Blog" target="_blank"><img src="http://blog.18883.com/blog/attachments/date_200803/thumb_68e346d878d44cade76ea025ce7dd843.jpg" border="0" alt="大小: 58.3 K&#13;尺寸: 150 x 98&#13;浏览: 34 次&#13;点击打开新窗口浏览全图" width="150" height="98" /></a><br />
<br />
<a href="http://blog.18883.com/blog/images/295/" rel="lightbox" title="Hopol's Blog" target="_blank"><img src="http://blog.18883.com/blog/attachments/date_200803/thumb_d2dbef7330de73e89157c2feb0ef921a.jpg" border="0" alt="大小: 86.19 K&#13;尺寸: 150 x 126&#13;浏览: 29 次&#13;点击打开新窗口浏览全图" width="150" height="126" /></a><br />
<br />
<a href="http://blog.18883.com/blog/images/296/" rel="lightbox" title="Hopol's Blog" target="_blank"><img src="http://blog.18883.com/blog/attachments/date_200803/thumb_6106d8bc3fa8b527e2da4345e3bfca4a.jpg" border="0" alt="大小: 53.73 K&#13;尺寸: 134 x 150&#13;浏览: 20 次&#13;点击打开新窗口浏览全图" width="134" height="150" /></a><br />
<br />
<a href="http://blog.18883.com/blog/images/297/" rel="lightbox" title="Hopol's Blog" target="_blank"><img src="http://blog.18883.com/blog/attachments/date_200803/thumb_08b5c0f0eab91ac7f8f760357adaa420.jpg" border="0" alt="大小: 20.09 K&#13;尺寸: 150 x 106&#13;浏览: 24 次&#13;点击打开新窗口浏览全图" width="150" height="106" /></a></p>]]></description>
			<link>http://blog.18883.com/blog/408</link>
			<category domain="http://blog.18883.com/blog/category/12">Autoit</category>
			<pubDate>2008-03-11 07:53</pubDate>
		</item>
		<item>
			<guid>http://blog.18883.com/blog/407</guid>
			<title>autoit脚本函数用法中文说明</title>
			<author>hopol</author>
			<description><![CDATA[<p><strong><font color="#ff0000">{系统环境变量}</font></strong> <br />
<br />
EnvUpdate ( ) <br />
;更新环境变量 <br />
EnvGet ( &quot;变量名称&quot; ) <br />
;取环境变量 <br />
ClipGet ( ) <br />
;取剪辑板文本 <br />
EnvSet ( &quot;变量名称&quot; [, &quot;值&quot;] ) <br />
;置环境变量 <br />
ClipPut ( &quot;文本&quot; ) <br />
;置剪辑板文本 <br />
<br />
<strong><font color="#ff0000">{文件,目录,磁盘管理} <br />
</font></strong><br />
IniRead (&quot;文件名&quot;, &quot;功能区&quot;, &quot;关键字&quot;, &quot;缺省值&quot; ) <br />
;Ini文件读关键字的值 <br />
IniDelete ( &quot;文件名&quot;, &quot;功能区&quot;, &quot;关键字&quot; ) <br />
;Ini文件删除关键字 <br />
IniWrite ( &quot;文件名&quot;, &quot;功能区&quot;, &quot;关键字&quot;, &quot;值&quot; ) <br />
;Ini文件写关键字的值 <br />
FileInstall ( &quot;源文件&quot;, &quot;目标文件&quot; [,参数] ) <br />
;安装文件 <br />
FileFindFirstFile ( &quot;文件名&quot; ) <br />
;查找文件（第一次） <br />
FileFindNextFile ( 文件号) <br />
;查找文件（继续） <br />
FileRecycle ( &quot;源文件&quot; ) <br />
;放入回收站 <br />
FileChangeDir ( &quot;目录&quot; ) <br />
;改变当前目录 <br />
FileCreateShortcut ( &quot;文件名&quot;, &quot;快捷方式名&quot; [, &quot;工作目录&quot;, &quot;args&quot;, &quot;desc&quot;, &quot;图标&quot;, &quot;热键&quot;] ) <br />
;建立快捷方式 <br />
DirCreate ( &quot;目录&quot; ) <br />
;目录创建 <br />
DirCopy ( &quot;源目录&quot;, &quot;目标目录&quot; [,参数] ) <br />
;目录复制 <br />
DirRemove ( &quot;目录&quot; [,参数] ) <br />
;目录删除 <br />
DirMove ( &quot;源目录&quot;, &quot;目标目录&quot; [,参数] ) <br />
;目录移动 <br />
DriveGetDrive ( &quot;类别&quot; ) <br />
;驱动器查找 <br />
FileGetLongName ( &quot;完整路径和文件名&quot; ) <br />
;取长文件名 <br />
DriveSpaceTotal ( &quot;路径&quot; ) <br />
;取磁盘空间 <br />
DriveSpaceFree ( &quot;路径&quot; ) <br />
;取磁盘剩余空间 <br />
FileGetShortName ( &quot;完整路径和文件名&quot; ) <br />
;取短文件名 <br />
DriveGetLabel ( &quot;路径&quot; ) <br />
;取驱动器卷标 <br />
DriveGetType ( &quot;路径&quot; ) <br />
;取驱动器类型 <br />
DriveGetFileSystem ( &quot;路径&quot; ) <br />
;取驱动器文件格式 <br />
DriveGetSerial ( &quot;路径&quot; ) <br />
;取驱动器序列号 <br />
DriveStatus ( &quot;路径&quot; ) <br />
;取驱动器状态 <br />
FileGetVersion ( &quot;文件名&quot; ) <br />
;取文件版本 <br />
FileGetSize ( &quot;文件名&quot; ) <br />
;取文件大小 <br />
FileGetTime ( &quot;文件名&quot; [,选项] ) <br />
;取文件日期 <br />
FileGetAttrib ( &quot;文件名&quot; ) <br />
;取文件属性 <br />
FileSaveDialog ( &quot;标题&quot;, &quot;初始目录&quot;, &quot;文件类型&quot; [,选项] ) <br />
;文件保存对话框 <br />
FileOpen ( &quot;文件名&quot;,打开方式 ) <br />
;文件打开 <br />
FileOpenDialog ( &quot;标题&quot;, &quot;初始目录&quot;, &quot;文件类型&quot; [,选项] ) <br />
;文件打开对话框 <br />
FileRead ( 文件号或&quot;文件名&quot;,字符个数 ) <br />
;文件读 <br />
FileReadLine ( 文件号或&quot;文件名&quot; [,行号] ) <br />
;文件读行 <br />
FileCopy ( &quot;源文件&quot;, &quot;目标文件&quot; [, 参数] ) <br />
;文件复制 <br />
FileClose ( 文件号 ) <br />
;文件关闭 <br />
FileSelectFolder ( &quot;提示文本&quot;, &quot;根目录&quot;,参数 ) <br />
;文件夹选择 <br />
FileDelete ( &quot;路径&quot; ) <br />
;文件删除 <br />
FileExists ( &quot;路径&quot; ) <br />
;文件是否存在 <br />
FileWrite ( 文件号或&quot;文件名&quot; , &quot;内容&quot; ) <br />
;文件写 <br />
FileWriteLine ( 文件号或&quot;文件名&quot; , &quot;内容&quot;) <br />
;文件写行 <br />
FileMove ( &quot;源文件&quot;, &quot;目标文件&quot; [,参数] ) <br />
;文件移动 <br />
DriveSetLabel ( &quot;路径&quot;, &quot;卷标名&quot; ) <br />
;置驱动器卷标 <br />
FileSetTime ( &quot;文件&quot;, &quot;日期&quot;, 选项 [,参数] ) <br />
;置文件日期 <br />
FileSetAttrib ( &quot;文件&quot;, &quot;+-RASHNOT&quot; [,参数] ) <br />
;置文件属性 <br />
<br />
<strong><font color="#ff0000">{键盘控制}</font> <br />
</strong><br />
Send ( &quot;按键&quot; [,参数] ) <br />
;发送 <br />
HotKeySet ( &quot;热键&quot; [, &quot;自定义功能函数&quot;] ) <br />
;置热键 <br />
<br />
<strong><font color="#ff0000">{鼠标控制}</font></strong> <br />
<br />
MouseGetCursor ( ) <br />
;取鼠标指针类型 <br />
MouseGetPos ( ) <br />
;取鼠标坐标 <br />
MouseDown ( &quot;按键&quot; ) <br />
;鼠标按下 <br />
MouseClickDrag ( &quot;按键&quot;, 第一点横坐标, 第一点纵坐标, 第二点横坐标, 第二点纵坐标[,速度] ) <br />
;鼠标按住拖动 <br />
MouseClick ( &quot;按键&quot; [,横坐标,纵坐标[,次数 [,速度 ]]] ) <br />
;鼠标点击 <br />
MouseUp ( &quot;按键&quot; ) <br />
;鼠标放开 <br />
MouseMove ( 横坐标,纵坐标 [,速度] ) <br />
;鼠标移动 <br />
<br />
<strong><font color="#ff0000">{数学函数}</font></strong> <br />
<br />
Exp ( n ) <br />
;e的n次平方 <br />
BitNOT ( 数值 ) <br />
;非运算 <br />
BitOR ( 值1,值2 ) <br />
;或运算 <br />
Log ( 数字或数学表达式 ) <br />
;取对数 <br />
ACos (数字或数学表达式) <br />
;取反余弦 <br />
ATan ( 数字或数学表达式 ) <br />
;取反正切 <br />
ASin ( 数字或数学表达式) <br />
;取反正弦 <br />
Abs (数字或数学表达式) <br />
;取绝对值 <br />
Mod ( 值1,值2 ) <br />
;取模数 <br />
Sqrt ( 数字或数学表达式 ) <br />
;取平方根 <br />
Random ( [[最小值 ,]最大值] ) <br />
;取随机数 <br />
Cos (数字或数学表达式) <br />
;取余弦 <br />
Tan ( 数字或数学表达式 ) <br />
;取正切 <br />
Sin ( 数字或数学表达式 ) <br />
;取正弦 <br />
Round (数字或数学表达式[,小数点后保留位数] ) <br />
;四舍五入 <br />
BitXOR ( 值1,值2 ) <br />
;位或运算 <br />
BitShift ( 值,移动数 ) <br />
;位移运算 <br />
BitAND ( 值1,值2 ) <br />
;与运算 <br />
<br />
<strong><font color="#ff0000">{信息框,对话框} <br />
</font></strong><br />
ProgressOn ( &quot;标题&quot;, &quot;主文本&quot; [, &quot;子文本&quot; [, 横坐标 [, 纵坐标[,选项]]]] ) <br />
;打开进度条窗口 <br />
ProgressOff ( ) <br />
;关闭进度条窗口 <br />
SplashOff ( ) <br />
;关闭置顶窗口 <br />
ProgressSet ( 进度值 [, &quot;子文本&quot; [, &quot;主文本&quot;]] ) <br />
;进度设置 <br />
InputBox ( &quot;标题&quot;, &quot;提示&quot; [, &quot;缺省文本&quot; [, &quot;密码符号&quot; [,宽度,高度 [,左边,右边[,等待时间]]]]] ) <br />
;输入框 <br />
MsgBox ( 按钮参数, &quot;标题&quot;, &quot;信息文本&quot; [,等待时间] ) <br />
;信息框 <br />
SplashImageOn ( &quot;标题&quot;, &quot;图像文件名&quot; [,宽度 [,高度 [,横坐标[,纵坐标 [,选项]]]]] ) <br />
;置顶图像窗口 <br />
SplashTextOn ( &quot;标题&quot;,&quot;文本&quot;[,宽度[,高度[,横坐标[,纵坐标[,选项[,&quot;字体名称&quot;[,&quot;字体大小&quot;[,&quot;字体重量&quot;]]]]]]]] ) <br />
;置顶文本窗口 <br />
ToolTip ( &quot;提示文本&quot; [,横坐标,纵坐标] ) <br />
;置提示文本 <br />
TrayTip ( &quot;标题&quot;, &quot;提示文本&quot;, 等待时间 [,图标选项] ) <br />
;置托盘气泡提示（2000/xp） <br />
<br />
<strong><font color="#ff0000">{系统函数}</font></strong> <br />
<br />
SoundPlay ( &quot;文件名&quot; [,等待方式] ) <br />
;播放声音 <br />
Call ( &quot;自定义功能函数&quot; ) <br />
;调用自定义功能函数 <br />
CDTray ( &quot;盘符&quot;, &quot;开关命令&quot; ) <br />
;光驱开关 <br />
AdlibEnable ( &quot;自定义功能函数&quot; [,间隔时间] ) <br />
;激活意外窗口处理 <br />
TimerStop ( 时间标志 ) <br />
;计时结束 <br />
TimerStart ( ) <br />
;计时开始 <br />
Exit (0) <br />
;结束 <br />
AdlibDisable ( ) <br />
;禁止意外窗口处理 <br />
BlockInput ( 参数 ) <br />
;禁止用户输入 <br />
Break ( 参数 ) <br />
;禁止用户退出 <br />
MemGetStats ( ) <br />
;取内存状态 <br />
AutoItWinGetTitle ( ) <br />
;取系统窗口标题 <br />
PixelGetRGB(横坐标,纵坐标) <br />
;取像素点RGB三色 <br />
PixelGetColor ( 横坐标 , 纵坐标 ) <br />
;取像素点颜色 <br />
PixelSearch ( 左边, 顶边, 右边, 底边, 颜色值 [, shade-variation] [,间隔像素数]] ) <br />
;搜索颜色 <br />
URLDownloadToFile ( &quot;连接地址及文件名&quot;, &quot;存储到的文件名&quot; ) <br />
;下载文件 <br />
SetError ( 值 ) <br />
;置变量@error <br />
AutoItWinSetTitle ( &quot;新标题&quot; ) <br />
;置系统窗口标题 <br />
SoundSetWaveVolume ( 音量大小 ) <br />
;置音量 <br />
<br />
<strong><font color="#ff0000">{进程管理}</font></strong> <br />
<br />
ProcessWait ( &quot;进程&quot; [,等待时间] ) <br />
;等待进程存在 <br />
ProcessWaitClose ( &quot;进程&quot; [,等待时间] ) <br />
;等待进程关闭 <br />
ProcessClose ( &quot;进程&quot; ) <br />
;关闭进程 <br />
Shutdown ( 关机方式 ) <br />
;关机 <br />
ProcessExists ( &quot;进程&quot; ) <br />
;进程是否存在 <br />
Sleep ( 时间 ) <br />
;睡眠/暂停运行 <br />
RunAsSet ( [&quot;用户名&quot;, &quot;domain&quot;, &quot;密码&quot;] ) <br />
;以别人身份登录运行 <br />
RunWait(@ComSpec &amp; &quot; /c &quot; &amp; 'DOS命令行', &quot;&quot;,参数) <br />
;运行DOS命令 <br />
RunWait ( &quot;文件名&quot; [, &quot;工作目录&quot; [, 参数]] ) <br />
;运行并等待结束 <br />
Run ( &quot;文件名&quot; [, &quot;工作目录&quot; [,参数]] ) <br />
;运行程序 <br />
<br />
<strong><font color="#ff0000">{注册表管理}</font></strong> <br />
<br />
RegRead ( &quot;键路径&quot;, &quot;键名&quot; ) <br />
;读键值 <br />
RegDelete ( &quot;键路径&quot; [, &quot;键名&quot;] ) <br />
;删除键 <br />
RegWrite ( &quot;键路径&quot;, &quot;键名&quot;, &quot;类型&quot;, 值 ) <br />
;写键值 <br />
<br />
<strong><font color="#ff0000">{字符串管理}</font></strong> <br />
<br />
StringFormat ( &quot;格式&quot;, $var1 [, ... $var32] ) <br />
;格式化字符串 <br />
StringLen ( &quot;字符串&quot; ) <br />
;取长度 <br />
StringRight ( &quot;字符串&quot;,字符数 ) <br />
;取右边 <br />
StringMid ( &quot;字符串&quot;,开始位置,字符数 ) <br />
;取中间 <br />
StringLeft ( &quot;字符串&quot;,字符数 ) <br />
;取左边 <br />
StringStripCR ( &quot;字符串&quot; ) <br />
;删除回车符 <br />
StringStripWS ( &quot;字符串&quot;,参数 ) <br />
;删除空格 <br />
StringTrimRight ( &quot;字符串&quot;,字符数 ) <br />
;删除右边 <br />
StringTrimLeft ( &quot;字符串&quot;,字符数 ) <br />
;删除左边 <br />
StringIsASCII ( &quot;字符串&quot; ) <br />
;是否为ASCII <br />
StringIsDigit ( &quot;字符串&quot; ) <br />
;是否为阿拉伯数字 <br />
StringIsUpper ( &quot;字符串&quot; ) <br />
;是否为大写 <br />
StringIsFloat ( &quot;字符串&quot; ) <br />
;是否为浮点小数 <br />
StringIsSpace ( &quot;字符串&quot; ) <br />
;是否为空 <br />
StringIsXDigit ( &quot;字符串&quot; ) <br />
;是否为十六进制字符 <br />
StringIsAlNum ( &quot;字符串&quot; ) <br />
;是否为数字 <br />
StringIsLower ( &quot;string&quot; ) <br />
;是否为小写 <br />
StringIsInt ( &quot;字符串&quot; ) <br />
;是否为整数 <br />
StringIsAlpha ( &quot;字符串&quot; ) <br />
;是否为字母 <br />
StringAddCR ( &quot;字符串&quot; ) <br />
;添加换行符 <br />
StringReplace ( &quot;字符串&quot;, &quot;查找的字符串&quot;, &quot;替换后的字符串&quot; [,数量 [,区分大小写]] ) <br />
;文本替换 <br />
StringUpper ( &quot;字符串&quot; ) <br />
;转换为大写 <br />
StringLower ( &quot;字符串&quot; ) <br />
;转换为小写 <br />
StringInStr ( &quot;字符串&quot;, &quot;字符&quot; [,大小写] ) <br />
;字符包含 <br />
StringSplit ( &quot;字符串&quot;, &quot;参考符&quot; ) <br />
;字符串分离 <br />
<br />
<strong><font color="#ff0000">{变量与转换函数}</font></strong> <br />
<br />
IsDeclared ( 变量 ) <br />
;变量是否被声明 <br />
Asc ( &quot;字符&quot; ) <br />
;取Asc码 <br />
Eval ( 变量或表达式 ) <br />
;取变量值 <br />
UBound ( 数组名 [,维数] ) <br />
;取数组大小 <br />
Int ( 小数或表达式 ) <br />
;取整 <br />
Chr ( ASC码 ) <br />
;取字符 <br />
IsAdmin ( ) <br />
;是否为管理员 <br />
IsNumber ( 变量 ) <br />
;是否为数字 <br />
IsArray ( 变量 ) <br />
;是否为数组 <br />
IsFloat ( 变量或数值 ) <br />
;是否为小数 <br />
IsInt ( 变量或数值 ) <br />
;是否为整数 <br />
IsString ( 变量 ) <br />
;是否为字符 <br />
Dec ( &quot;十六进制&quot; ) <br />
;转换为十进制 <br />
Hex ( 十进制数, 长度 ) <br />
;转换为十六进制 <br />
Number ( 表达式 ) <br />
;转换为数字 <br />
String ( 表达式 ) <br />
;转换为字符 <br />
<br />
<strong><font color="#ff0000">{窗口管理}</font></strong> <br />
<br />
WinExists ( &quot;标题&quot; [, &quot;文字&quot;] ) <br />
;窗口是否存在 <br />
WinActive ( &quot;标题&quot; [, &quot;文字&quot;] ) <br />
;窗口是否激活 <br />
WinSetOnTop ( &quot;标题&quot;, &quot;文字&quot;, 参数 ) <br />
;窗口置顶 <br />
WinWait ( &quot;标题&quot; [, &quot;文字&quot; [,等待时间]] ) <br />
;等待窗口出现 <br />
WinWaitClose ( &quot;标题&quot; [, &quot;文字&quot; [,等待时间]] ) <br />
;等待窗口关闭 <br />
WinWaitActive ( &quot;标题&quot; [, &quot;文字&quot; [,等待时间]] ) <br />
;等待窗口激活 <br />
WinWaitNotActive ( &quot;标题&quot; [, &quot;文字&quot; [,等待时间]] ) <br />
;等待窗口取消激活状态 <br />
WinMenuSelectItem ( &quot;标题&quot;,&quot;文字&quot;,&quot;菜单项1&quot; [,&quot;菜单项2&quot; [,&quot;菜单项3&quot;&hellip;&hellip;]] ) <br />
;调用菜单 <br />
WinClose ( &quot;标题&quot; [, &quot;文字&quot;] ) <br />
;关闭窗口 <br />
WinMinimizeAllUndo ( ) <br />
;恢复&ldquo;全部最小化&rdquo;的窗口 <br />
WinActivate ( &quot;标题&quot; [, &quot;文字&quot;] ) <br />
;激活窗口 <br />
WinKill ( &quot;标题&quot; [, &quot;文字&quot;] ) <br />
;强制关闭窗口 <br />
WinGetTitle ( &quot;标题&quot; [, &quot;文字&quot;] ) <br />
;取窗口标题 <br />
WinGetHandle ( &quot;标题&quot; [, &quot;文字&quot;] ) <br />
;取窗口句柄 <br />
WinGetClientSize ( &quot;标题&quot; [, &quot;文字&quot;] ) <br />
;取窗口客户区大小 <br />
WinGetClassList ( &quot;标题&quot; [, &quot;文字&quot;] ) <br />
;取窗口类列表 <br />
WinGetText ( &quot;标题&quot; [, &quot;文字&quot;] ) <br />
;取窗口文字 <br />
WinGetCaretPos ( ) <br />
;取窗口中控件坐标 <br />
WinGetState ( &quot;标题&quot; [, &quot;文字&quot;] ) <br />
;取窗口状态 <br />
WinGetPos ( &quot;标题&quot; [, &quot;文字&quot;] ) <br />
;取窗口坐标 <br />
WinMinimizeAll ( ) <br />
;全部最小化 <br />
WinMove ( &quot;标题&quot;, &quot;文字&quot;,横坐标,纵坐标[,宽度 [,高度]] ) <br />
;移动窗口 <br />
WinSetTitle ( &quot;标题&quot;, &quot;文字&quot;, &quot;新标题&quot; ) <br />
;置窗口标题 <br />
WinSetState ( &quot;标题&quot;, &quot;文字&quot; ,参数 ) <br />
;置窗口状态 <br />
<br />
<strong><font color="#ff0000">{控制管理}</font></strong> <br />
<br />
ControlCommand ( &quot;窗口标题&quot;, &quot;窗口文字&quot;, &quot;控件类名称&quot;, &quot;命令&quot;, &quot;选项&quot; ) <br />
;发送控制命令 <br />
ControlSend ( &quot;窗口标题&quot;, &quot;窗口文字&quot;, &quot;控件类名称&quot;, &quot;文本&quot; [,参数] ) <br />
;发送文本到控件 <br />
ControlDisable ( &quot;窗口标题&quot;, &quot;窗口文字&quot;, &quot;控件类名称&quot; ) <br />
;禁止控件 <br />
ControlGetFocus ( &quot;窗口标题&quot; [, &quot;窗口文字&quot;] ) <br />
;取焦点控件的类名称 <br />
ControlGetPos ( &quot;窗口标题&quot;, &quot;窗口文字&quot;, &quot;控件类名称&quot; ) <br />
;取控件位置 <br />
ControlGetText ( &quot;窗口标题&quot;, &quot;窗口文字&quot;, &quot;控件类名称&quot; ) <br />
;取控件文字 <br />
StatusbarGetText ( &quot;窗口标题&quot; [, &quot;窗口文字&quot; [, 状态栏部分]] ) <br />
;取状态栏文本 <br />
ControlSetText ( &quot;窗口标题&quot;, &quot;窗口文字&quot;, &quot;控件类名称&quot;,&quot;新文本&quot; ) <br />
;设置控件文本 <br />
ControlClick ( &quot;窗口标题&quot;, &quot;窗口文字&quot;, &quot;控件类名称&quot; [,鼠标按键] [,点击次数]] ) <br />
;鼠标点击控件 <br />
ControlShow (&quot;窗口标题&quot;, &quot;窗口文字&quot;, &quot;控件类名称&quot;) <br />
;显示控件 <br />
ControlMove ( &quot;窗口标题&quot;, &quot;窗口文字&quot;, &quot;控件类名称&quot;,横坐标,纵坐标[,宽度 [,高度]] ) <br />
;移动控件 <br />
ControlHide (&quot;窗口标题&quot;, &quot;窗口文字&quot;, &quot;控件类名称&quot;) <br />
;隐藏控件 <br />
ControlEnable ( &quot;窗口标题&quot;, &quot;窗口文字&quot;, &quot;控件类名称&quot; ) <br />
;允许控进 <br />
ControlFocus ( &quot;窗口标题&quot;, &quot;窗口文字&quot;, &quot;控件类名称&quot; ) <br />
;置焦点 <br />
<br />
<strong><font color="#ff0000">{系统设置}</font></strong> <br />
<br />
AutoItSetOption ( &quot;MustDeclareVars&quot;,参数 ) <br />
;变量是否预先声明 <br />
AutoItSetOption ( &quot;WinTitleMatchMode&quot;,参数 ) <br />
;标题匹配方式 <br />
AutoItSetOption ( &quot;WinWaitDelay&quot;,参数 ) <br />
;窗口等待延迟 <br />
AutoItSetOption ( &quot;SendAttachMode&quot;,参数 ) <br />
;发送跟随模式 <br />
AutoItSetOption ( &quot;SendKeyDelay&quot;,参数 ) <br />
;发送延迟 <br />
AutoItSetOption ( &quot;CaretCoordMode&quot;,参数 ) <br />
;符号坐标匹配方式 <br />
AutoItSetOption ( &quot;SendCapslockMode&quot;,参数 ) <br />
;恢复大小写状态 <br />
AutoItSetOption ( &quot;WinDetectHiddenText&quot;,参数 ) <br />
;检测隐藏文字 <br />
AutoItSetOption ( &quot;WinSearchChildren&quot;,参数 ) <br />
;检测子窗口 <br />
AutoItSetOption ( &quot;SendKeyDownDelay&quot;,参数 ) <br />
;键盘按下延迟 <br />
AutoItSetOption ( &quot;MouseClickDownDelay&quot;,参数 ) <br />
;鼠标按下延迟 <br />
AutoItSetOption ( &quot;MouseClickDelay&quot;,参数 ) <br />
;鼠标单击延迟 <br />
AutoItSetOption ( &quot;MouseClickDragDelay&quot;,参数 ) <br />
;鼠标拖动延迟 <br />
AutoItSetOption ( &quot;MouseCoordMode&quot;,参数 ) <br />
;鼠标坐标匹配方式 <br />
AutoItSetOption ( &quot;ExpandEnvStrings&quot;,参数 ) <br />
;特殊符号扩展 <br />
AutoItSetOption ( &quot;TrayIconDebug&quot;,参数 ) <br />
;托盘代码提示 <br />
AutoItSetOption ( &quot;WinTextMatchMode&quot;,参数 ) <br />
;文字匹配方式 <br />
AutoItSetOption ( &quot;PixelCoordMode&quot;,参数 ) <br />
;像素点坐标匹配方式 <br />
AutoItSetOption ( &quot;TrayIconHide&quot;,参数 ) <br />
;隐藏托盘 <br />
AutoItSetOption ( &quot;RunErrorsFatal&quot;,参数 ) <br />
;遇错终止</p>]]></description>
			<link>http://blog.18883.com/blog/407</link>
			<category domain="http://blog.18883.com/blog/category/12">Autoit</category>
			<pubDate>2008-03-11 07:49</pubDate>
		</item>
		<item>
			<guid>http://blog.18883.com/blog/406</guid>
			<title>autoit 加密码</title>
			<author>hopol</author>
			<description><![CDATA[<p>加密码是很容易的事，一段比较简单的密码检查段就能搞定<br />
<br />
(密码是18883.com)： <br />
<br />
<br />
<blockquote><code><span style="color: #000000">
<span style="color: #0000BB">$kcps</span><span style="color: #007700">=</span><span style="color: #DD0000">"a32198aaacczz18883.comzqqrfdqwernuhugy199523luckey311pzqqr840333fdqwernuhugy199523luckey403"&nbsp;</span><span style="color: #007700">;</span><span style="color: #0000BB">设置密码，加了简单混乱法，防工作时源代码被旁观时看到密码，哈哈，再仔细些可以将这行与下行分开些放，让旁观者不能一眼猜到用处&nbsp;<br /><br />$kcps&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">StringMid</span><span style="color: #007700">(</span><span style="color: #0000BB">$kcps</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">14</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">9</span><span style="color: #007700">)&nbsp;;</span><span style="color: #0000BB">对上一行混乱代码中提取要的密码段，如你感觉不必要，可以将这两行改成一行：$kcps&nbsp;</span><span style="color: #007700">=&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">18883.com&nbsp;<br /><br />$input</span><span style="color: #007700">=</span><span style="color: #0000BB">InputBox</span><span style="color: #007700">(</span><span style="color: #DD0000">"立正！稍息！"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"请回答口令："</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">""</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"*"</span><span style="color: #007700">,</span><span style="color: #0000BB">200</span><span style="color: #007700">,</span><span style="color: #0000BB">120</span><span style="color: #007700">,-</span><span style="color: #0000BB">1</span><span style="color: #007700">,-</span><span style="color: #0000BB">1</span><span style="color: #007700">,</span><span style="color: #0000BB">10</span><span style="color: #007700">)&nbsp;<br /><br />if&nbsp;@</span><span style="color: #0000BB">error</span><span style="color: #007700">=</span><span style="color: #0000BB">0&nbsp;Then&nbsp;<br /><br /></span><span style="color: #007700">If&nbsp;</span><span style="color: #0000BB">$kcps&nbsp;</span><span style="color: #007700">&lt;&gt;&nbsp;</span><span style="color: #0000BB">$input&nbsp;Then&nbsp;<br /><br />MsgBox&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">32</span><span style="color: #007700">,</span><span style="color: #DD0000">"真遗憾!!!"</span><span style="color: #007700">,</span><span style="color: #DD0000">"想不起来了？"</span><span style="color: #007700">,</span><span style="color: #0000BB">9</span><span style="color: #007700">)&nbsp;<br /><br />Exit&nbsp;<br /><br />EndIf&nbsp;<br /><br />EndIf&nbsp;<br /><br />if&nbsp;@</span><span style="color: #0000BB">error</span><span style="color: #007700">=</span><span style="color: #0000BB">1&nbsp;Then&nbsp;</span><span style="color: #007700">Exit&nbsp;<br /><br />if&nbsp;@</span><span style="color: #0000BB">error</span><span style="color: #007700">=</span><span style="color: #0000BB">2&nbsp;Then&nbsp;<br /><br />MsgBox&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">32</span><span style="color: #007700">,</span><span style="color: #DD0000">"真遗憾!!!"</span><span style="color: #007700">,</span><span style="color: #DD0000">"回答个口令有这么慢么？"</span><span style="color: #007700">,</span><span style="color: #0000BB">9</span><span style="color: #007700">)&nbsp;<br /><br />Exit&nbsp;<br /><br />EndIf&nbsp;<br /><br />if&nbsp;@</span><span style="color: #0000BB">error</span><span style="color: #007700">=</span><span style="color: #0000BB">3&nbsp;Then&nbsp;<br /><br />MsgBox&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">16</span><span style="color: #007700">,</span><span style="color: #DD0000">"意外错误!!!"</span><span style="color: #007700">,</span><span style="color: #DD0000">"口令输入框显示失败！请重试！"</span><span style="color: #007700">,</span><span style="color: #0000BB">9</span><span style="color: #007700">)&nbsp;<br /><br />Exit&nbsp;<br /><br />EndIf</span><span style="color: #0000BB"></span>
</span>
</code></blockquote>
</p>
<hr />
<p><br />
<blockquote><code><span style="color: #000000">
<span style="color: #0000BB">觉得还是简单的才是好用的，重新写个：&nbsp;<br /><br /><br /><br />$kcps&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"18883.com"<br /><br /></span><span style="color: #0000BB">$input</span><span style="color: #007700">=</span><span style="color: #0000BB">InputBox</span><span style="color: #007700">(</span><span style="color: #DD0000">"立正！稍息！"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"请回答口令："</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">""</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"*"</span><span style="color: #007700">,</span><span style="color: #0000BB">200</span><span style="color: #007700">,</span><span style="color: #0000BB">120</span><span style="color: #007700">,-</span><span style="color: #0000BB">1</span><span style="color: #007700">,-</span><span style="color: #0000BB">1</span><span style="color: #007700">)&nbsp;<br /><br />if&nbsp;@</span><span style="color: #0000BB">error</span><span style="color: #007700">=</span><span style="color: #0000BB">0&nbsp;Then&nbsp;<br /><br /></span><span style="color: #007700">If&nbsp;</span><span style="color: #0000BB">$kcps&nbsp;</span><span style="color: #007700">&lt;&gt;&nbsp;</span><span style="color: #0000BB">$input&nbsp;Then&nbsp;<br /><br />MsgBox&nbsp;</span><span style="color: #007700">(</span><span style="color: #0000BB">32</span><span style="color: #007700">,</span><span style="color: #DD0000">"真遗憾!!!"</span><span style="color: #007700">,</span><span style="color: #DD0000">"想不起来了？"</span><span style="color: #007700">,</span><span style="color: #0000BB">9</span><span style="color: #007700">)&nbsp;<br /><br />Exit&nbsp;<br /><br />EndIf&nbsp;<br /><br />EndIf</span><span style="color: #0000BB"></span>
</span>
</code></blockquote>
</p>
<hr />
<p><br />
<blockquote><code><span style="color: #000000">
<span style="color: #0000BB">再简化一下，重新写个：&nbsp;<br /><br /><br /><br />$kcps&nbsp;</span><span style="color: #007700">=&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"18883.com"&nbsp;<br /><br /></span><span style="color: #0000BB">$input</span><span style="color: #007700">=</span><span style="color: #0000BB">InputBox</span><span style="color: #007700">(</span><span style="color: #DD0000">"立正！"</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"报口令："</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">""</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"*"</span><span style="color: #007700">,</span><span style="color: #0000BB">200</span><span style="color: #007700">,</span><span style="color: #0000BB">120</span><span style="color: #007700">,-</span><span style="color: #0000BB">1</span><span style="color: #007700">,-</span><span style="color: #0000BB">1</span><span style="color: #007700">)&nbsp;<br /><br />If&nbsp;</span><span style="color: #0000BB">$kcps&nbsp;</span><span style="color: #007700">&lt;&gt;&nbsp;</span><span style="color: #0000BB">$input&nbsp;Then&nbsp;</span><span style="color: #007700">Exit</span><span style="color: #0000BB"></span>
</span>
</code></blockquote>
</p>]]></description>
			<link>http://blog.18883.com/blog/406</link>
			<category domain="http://blog.18883.com/blog/category/12">Autoit</category>
			<pubDate>2008-03-11 07:42</pubDate>
		</item>
		<item>
			<guid>http://blog.18883.com/blog/405</guid>
			<title>autoit 中文帮助 说明文件 常见问题</title>
			<author>hopol</author>
			<description><![CDATA[<p>中文帮助 说明文件<br />
<br />
<font color="#ff0000"><strong><a href="http://blog.18883.com/blog/download/273/" title="1.33 M, 下载次数:791" target="_blank">au3的中文帮助说明文件.chm</a><br />
</strong></font><br />
<font size="4"><strong>常见问题<br />
</strong></font><br />
Q1 如何调试脚本？ <br />
<br />
<font color="#ff00ff"><font color="#800080">MsgBox(0,&quot;测试&quot;,$var) <br />
ConsoleWrite(&quot;var=&quot; &amp; $var &amp; @CRLF)</font> <br />
</font><br />
Q2 操作CMD相关命令 <br />
Q2.1 如何运行DOS命令？ <br />
<br />
<font color="#800080">Run(@ComSpec &amp; ' /c dir&amp;gt;d:\dir.txt',&quot;&quot;, @SW_HIDE) <br />
<br />
#include &amp;lt;Process.au3&amp;gt; <br />
$rc = _RunDos(&quot;start Http://www.18883.com&quot;)</font> <br />
<br />
Q2.2 运行DOS命令如何连接AU3变量？ <br />
<br />
<font color="#800080">Local $var=&quot;d:\dir.txt&quot; <br />
Run(@ComSpec &amp; ' /c dir&amp;gt;&quot;'&amp;$var&amp;'&quot;',&quot;&quot;, @SW_HIDE) <br />
<br />
</font>Q2.3 运行DOS命令如何自动应答？(注意：这并不属于AU3的问题，这里附带说一下。) <br />
<br />
<font color="#800080">RunWait(@ComSpec &amp; ' /c echo y|cacls %systemroot%\system32\wpcap.dll /d everyone', <br />
<br />
@SystemDir, @SW_HIDE) <br />
</font><br />
Q2.4 多层DOS命令如何用？如netsh,diskpart等。 <br />
<br />
<font color="#800080">$dns=&quot;192.168.0.1&quot; <br />
RunWait(@ComSpec &amp; ' /C netsh -c interface ip set dns 本地连接 source=static addr=&quot;' &amp; $dns <br />
<br />
&amp;'&quot; register=PRIMARY ',&quot;&quot;, @SW_HIDE )</font> <br />
<br />
Q2.5 运行DOS命令如何直接截取回显？ <br />
<br />
<font color="#800080">;注意:回显截取只支持Run而不是RunWait <br />
#include &amp;lt;Constants.au3&amp;gt; <br />
Opt(&quot;MustDeclareVars&quot;,1) <br />
_test() <br />
Func _test() <br />
Local $foo,$line,$lines <br />
$foo = Run(@ComSpec &amp; &quot; /c sc query Alerter&quot;, @SystemDir, @SW_HIDE, $STDOUT_CHILD) <br />
$lines = &quot;&quot; <br />
While 1 <br />
$line = StdoutRead($foo) <br />
If @error Then ExitLoop <br />
$lines &amp;= $line <br />
Wend <br />
MsgBox(0,&quot;test&quot;,$lines) <br />
EndFunc <br />
<br />
</font>Q3 如何防止程序重复运行？ <br />
<br />
<font color="#800080">$g_szVersion = &quot;test&quot; <br />
If WinExists($g_szVersion) Then Exit <br />
AutoItWinSetTitle($g_szVersion) <br />
<br />
#include &amp;lt;Misc.au3&amp;gt; <br />
_Singleton(&quot;test&quot;) <br />
<br />
</font>Q4 如何直接运行系统程序关联的文件？如[.txt, .msi, .pdf, .jpg, .lnk, .msc]等等！！！ <br />
<br />
<font color="#800080">ShellExecute(&quot;Notepad.exe&quot;) <br />
ShellExecute(&quot;test.txt&quot;, &quot;&quot;, @ScriptDir, &quot;edit&quot;) <br />
ShellExecute(&quot;http://www.autoit.net.cn&quot;) <br />
ShellExecute(&quot;C:\boot.ini&quot;, &quot;&quot;, &quot;&quot;, &quot;print&quot;) <br />
ShellExecute(&quot;test.lnk&quot;,&quot;&quot;,@ScriptDir) <br />
ShellExecute(&quot;gpedit.msc&quot;, &quot;&quot;, &quot;&quot;, &quot;open&quot;, @SW_MAXIMIZE) <br />
Q5 如何控制系统服务？ <br />
<br />
API的控制服务 <br />
_StartService() 开始服务 <br />
_StopService() 停止服务 <br />
_ServiceExists() 检测服务 <br />
_ServiceRunning() 运行服务 <br />
_CreateService() 建立服务 <br />
_DeleteService() 删除服务 <br />
WMI的控制服务 <br />
_ServStart() 开始服务 <br />
_ServStop() 停止服务 <br />
_ServDelete() 删除服务 <br />
_ServGetDetails() 服务详情 <br />
_ServGetState() 服务状态 <br />
_ServListInstalled() 服务列表 <br />
_ServPause() 暂停服务 <br />
_ServResume() 服务改名 <br />
_SerSetState() 设置服务状态&nbsp;<br />
<br />
</font><font color="#ff0000"><strong><a href="http://blog.18883.com/blog/download/274/" title="5.45 K, 下载次数:20" target="_blank">服务控制完整版api+wmi 2008年新版.zip</a><br />
</strong></font><br />
Q6 如何操作注册表？ <br />
<br />
Q6.1 常用的注册表设置 <br />
<br />
<font color="#800080">;读取注册表指定的值 <br />
$var = RegRead(&quot;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion&quot;,&quot;ProgramFilesDir&quot;) <br />
MsgBox(4096, &quot;Program files 文件夹位于：&quot;, $var) <br />
;创建一个主键、子键或值项。 <br />
RegWrite(&quot;HKEY_LOCAL_MACHINE\SOFTWARE\Test&quot;, &quot;TestKey&quot;, &quot;REG_SZ&quot;, &quot;Hello this is a test&quot;) <br />
;删除注册表指定的值 (注意：这里删除的是键项，而不是键值。) <br />
RegDelete(&quot;HKEY_LOCAL_MACHINE\SOFTWARE&quot;, &quot;TestKey&quot;) <br />
;其他还有RegEnumKey(),RegEnumVal()，详细应用请参考帮助。 <br />
<br />
</font>Q6.2 注册表权限设置&nbsp;<br />
<br />
有的键值是需要先设置权限的。可以通过外部程序setacl.exe设置权限 <br />
例子： <br />
<font color="#800080">$setacl=@TempDir &amp; &quot;\setacl.exe&quot; <br />
<br />
RunWait(@ComSpec &amp; ' /c '&amp;$setacl&amp; ' MACHINE\SYSTEM\CurrentControlSet\Enum\Root\ACPI_HAL /registry /grant everyone /full', @TempDir, @SW_HIDE) <br />
</font><br />
<strong><font color="#ff0000"><a href="http://blog.18883.com/blog/download/275/" title="63.48 K, 下载次数:13" target="_blank">注册表权限设置.rar</a><br />
</font></strong><br />
Q7 如何不重启刷新注册表马上生效？ <br />
<br />
<font color="#800080">Do <br />
ProcessClose(&quot;explorer.exe&quot;) <br />
Until Not ProcessExists(&quot;explorer.exe&quot;) <br />
Run(&quot;gpupdate /force&quot;,&quot;&quot;,@SW_HIDE) <br />
<br />
;强烈推存应用这个 <br />
DllCall(&quot;user32.dll&quot;,&quot;int&quot;,&quot;SendMessageTimeout&quot;,&quot;hwnd&quot;,65535,&quot;int&quot;,26,&quot;int&quot;,0,&quot;int&quot;,0,&quot;int&quot;,0,&quot;int&quot;,1000,&quot;str&quot;,&quot;dwResult&quot;)</font> <br />
Q8 AU3编写的程序如何带参数运行？ <br />
<br />
<font color="#800080">If $cmdline[0] &amp;lt;&amp;gt; 0 Then <br />
$filename = $cmdline[1] <br />
MsgBox(4096, &quot;测试&quot;, '你输入的命令行参数是 &quot;' &amp; $filename &amp; '&quot;') <br />
Else <br />
MsgBox(64, &quot;测试&quot;, '请带参数运行此程序') <br />
EndIf <br />
<br />
If StringInStr($CmdLineRaw, &quot;/help&quot;) Then <br />
MsgBox(64,&quot;帮助&quot;,&quot;这是本程序的帮助说明&quot;) <br />
EndIf <br />
<br />
</font>Q9 如何删除脚本程序自身？ <br />
<br />
<font color="#800080">;删除脚本程序自身 <br />
Run(@ComSpec&amp;' /c ping 127.0.0.1 -n 3&amp;del /q &quot;'&amp;@ScriptFullPath&amp;'&quot;',@ScriptDir,@SW_HIDE) <br />
;删除脚本所在目录的一切东西 <br />
Run(@ComSpec&amp;' /c ping 127.0.0.1 -n 3&amp;rd /q/s &quot;'&amp;@ScriptDir&amp;'&quot;',@ScriptDir,@SW_HIDE)</font> <br />
Q10 AU3如何实现加密字符串和文件校验？ <br />
<br />
<font color="#800080">;RC4加密(AU3内置函数) <br />
#include &amp;lt;String.au3&amp;gt; <br />
Opt(&quot;MustDeclareVars&quot;, 1) <br />
Local $var <br />
;加密字符串 <br />
$var=_StringEncrypt(1,&quot;sanhen&quot;,@ComputerName,1) <br />
MsgBox(0,&quot;test&quot;,$var) <br />
;解密字符串 <br />
$var=_StringEncrypt(0,$var,@ComputerName,1) <br />
MsgBox(0,&quot;test&quot;,$var) <br />
</font><br />
;MD5字符串加密&nbsp;<br />
<font color="#800080">AU3如何调用MD5加密的问题。 <br />
其实官方一早就已经出有了MD5的UDF，只是有的朋友不大善于搜索罢了。 <br />
现在提供两个官方MD5的UDF给有需要应用的朋友下载。 <br />
一个是C语言格式的，一个是VBscript格式的UDF，其实作用是相同的。 <br />
看个人喜好了，下边是应用例子。 <br />
<br />
#include &lt;md5.au3&gt; <br />
#include &lt;StringMD5.au3&gt; <br />
<br />
$c_md5=md5(&quot;sanhen&quot;) <br />
$vb_md5=MD5_String(&quot;sanhen&quot;) <br />
<br />
MsgBox(64,&quot;C格式的MD5加密&quot;,$c_md5) <br />
MsgBox(64,&quot;Vbscript脚本格式的MD5加密&quot;,$vb_md5)&nbsp;<br />
</font><br />
<strong><font color="#ff0000"><a href="http://blog.18883.com/blog/download/276/" title="5.34 K, 下载次数:22" target="_blank">md5加密.rar</a><br />
</font></strong><br />
;MD5文件效验&nbsp;<br />
<br />
通过EXE检测&nbsp;&nbsp;<strong><font color="#ff0000"><a href="http://blog.18883.com/blog/download/277/" title="18.31 K, 下载次数:23" target="_blank">md5exe.rar</a></font></strong><br />
<br />
通过DLL来检测&nbsp;<strong><font color="#800080"><a href="http://blog.18883.com/blog/download/278/" title="17.4 K, 下载次数:23" target="_blank">md5dll.rar</a><br />
</font></strong><font color="#800080">#compiler_plugin_funcs = MD5Hash <br />
;上边的这句不能少。不然在Scite中调试出错。直接运行的可以省略上边这句。 <br />
$file=@SystemDir &amp; &quot;\userinit.exe&quot; <br />
$plH = PluginOpen(&quot;\\server-2\update\tools\MD5Hash.dll&quot;) <br />
$md5=MD5Hash($file, 1, True) <br />
If $md5&lt;&gt;&quot;7BD70EC53CB7398246C84D25BFF33AA8&quot; Then <br />
;装的是上海政府原版XP SP2，MD5是上边的那个，不同系统的用附件的DLL读取一下。 <br />
FileWriteLine(&quot;\\server-2\log$\log.txt&quot;,@ComputerName &amp;&quot;号机感染病毒！！！&quot;) <br />
EndIf <br />
PluginClose($plH)</font> <br />
<br />
;哈唏算法</p>
<div class="t_msgfont" id="postmessage_2222"><font style="font-size: 10.5pt">1．<br />
</font><font face="宋体 "><font style="font-size: 10.5pt">函数名称：</font></font><font style="font-size: 10.5pt"><a target="_blank" href="http://www.autoitscript.com/forum/index.php?act=attach&amp;type=post&amp;id=10647"><font color="#0000ff">FSHash</font></a><br />
</font><font face="宋体 "><font style="font-size: 10.5pt">作　　者：</font></font><font style="font-size: 10.5pt"><a target="_blank" href="http://www.autoitscript.com/forum/index.php?showuser=3075"><font color="#0000ff">JSThePatriot</font></a><br />
</font><font face="宋体 "><font style="font-size: 10.5pt">更新日期：</font></font><font style="font-size: 10.5pt">8-28-2006<br />
</font><font face="宋体 "><font style="font-size: 10.5pt">函数功用：</font></font><font style="font-size: 10.5pt"><em><strong><font color="#ff0000">MD5</font></strong>, SHA-1</em></font><font face="宋体 "><font style="font-size: 10.5pt">算法</font></font><font style="font-size: 10.5pt"><br />
<br />
</font><br />
<font style="font-size: 10.5pt">2．<br />
</font><font face="宋体 "><font style="font-size: 10.5pt">函数名称：</font></font><font style="font-size: 10.5pt"><a target="_blank" href="http://www.autoitscript.com/forum/index.php?automodule=downloads&amp;showfile=21"><font color="#0000ff">StringHash</font></a><br />
</font><font face="宋体 "><font style="font-size: 10.5pt">作　　者：</font></font><font style="font-size: 10.5pt"><a target="_blank" href="http://www.autoitscript.com/forum/index.php?showuser=3957"><font color="#0000ff">SolidSnake</font></a> <br />
</font><font face="宋体 "><font style="font-size: 10.5pt">更新日期：</font></font><font style="font-size: 10.5pt">12-12-2006</font><br />
<font face="宋体 "><font style="font-size: 10.5pt">函数功用：生成</font></font><font style="font-size: 10.5pt"><em><strong><font color="#ff0000">MD5</font></strong>,SHA1,SHA256,Tiger</em></font><font face="宋体 "><font style="font-size: 10.5pt">以及</font></font><font style="font-size: 10.5pt"><em>WhirlPool</em></font><br />
<font face="宋体 "><font style="font-size: 10.5pt">验证字符串</font></font><br />
<br />
<font style="font-size: 10.5pt">3．<br />
</font><font face="宋体 "><font style="font-size: 10.5pt">函数名称：</font></font><font style="font-size: 10.5pt"><a target="_blank" href="http://www.autoitscript.com/forum/index.php?automodule=downloads&amp;showfile=21"><font color="#0000ff">FileHash</font></a><br />
</font><font face="宋体 "><font style="font-size: 10.5pt">作　　者：</font></font><font style="font-size: 10.5pt"><a target="_blank" href="http://www.autoitscript.com/forum/index.php?showuser=3957"><font color="#0000ff">SolidSnake</font></a><br />
</font><font face="宋体 "><font style="font-size: 10.5pt">更新日期：</font></font><font style="font-size: 10.5pt">12-12-2006</font><br />
<font face="宋体 "><font style="font-size: 10.5pt">函数功用：生成</font></font><font style="font-size: 10.5pt"><em><strong><font color="#ff0000">MD5</font></strong>,SHA1,SHA256,Tiger</em></font><font face="宋体 "><font style="font-size: 10.5pt">以及</font></font><font style="font-size: 10.5pt"><em>WhirlPool</em></font><br />
<font face="宋体 "><font style="font-size: 10.5pt">验证文件</font></font><br />
<br />
<font style="font-size: 10.5pt">4．<br />
</font><font face="宋体 "><font style="font-size: 10.5pt">函数名称：</font></font><font style="font-size: 10.5pt"><a target="_blank" href="http://www.autoitscript.com/forum/index.php?act=attach&amp;type=post&amp;id=14437"><font color="#0000ff">Blowfish</font></a><br />
</font><font face="宋体 "><font style="font-size: 10.5pt">作　　者：</font></font><font style="font-size: 10.5pt"><a target="_blank" href="http://www.autoitscript.com/forum/index.php?showuser=1796"><font color="#0000ff">piccaso</font></a><br />
</font><font face="宋体 "><font style="font-size: 10.5pt">更新日期：</font></font><font style="font-size: 10.5pt">5-3-2007</font><br />
<font face="宋体 "><font style="font-size: 10.5pt">函数功用：</font></font><font style="font-size: 10.5pt"><em>blowfish</em></font><font face="宋体 "><font style="font-size: 10.5pt">加</font></font><font style="font-size: 10.5pt"><em>/</em></font><font face="宋体 "><font style="font-size: 10.5pt">解密函数</font></font></div>
<p><br />
Q11 如何修改屏幕分辨率/刷新频率/颜色深度？&nbsp;<br />
保存为: ChangeScreenRes.AU3 (可以任意)<br />
<br />
<font color="#666699">#include-once <br />
;=============================================================================== <br />
; <br />
; 函数名称: _ChangeScreenRes() <br />
; 详细信息: 修改 屏幕分辨率,刷新率. <br />
; 版本: 1.0.0.1 <br />
; 参数: $i_Width - 屏幕宽度(如1024X768 中的 1024) <br />
; $i_Height - 屏幕高度(如1024X768 中的 768) <br />
; $i_BitsPP -桌面颜色深度(如 32BIT,32位) <br />
; $i_RefreshRate - 屏幕刷新率(如 75 MHZ). <br />
; 需求 AutoIt 测试版 &gt; 3.1 以上 <br />
; 返回值 : 成功,屏幕更新,@ERROR = 0 <br />
; 失败,屏幕不更新, @ERROR = 1 <br />
; 论坛: http://www.autoitscript.com/forum/index.php?showtopic=20121 <br />
; 作者: Original code - psandu.ro <br />
; Modifications - PartyPooper <br />
; 翻译: thesnow <br />
; <br />
;=============================================================================== <br />
Func _ChangeScreenRes($i_Width = @DesktopWidth, $i_Height = @DesktopHeight, $i_BitsPP = @DesktopDepth, $i_RefreshRate = @DesktopRefresh) <br />
Local Const $DM_PELSWIDTH = 0x00080000 <br />
Local Const $DM_PELSHEIGHT = 0x00100000 <br />
Local Const $DM_BITSPERPEL = 0x00040000 <br />
Local Const $DM_DISPLAYFREQUENCY = 0x00400000 <br />
Local Const $CDS_TEST = 0x00000002 <br />
Local Const $CDS_UPDATEREGISTRY = 0x00000001 <br />
Local Const $DISP_CHANGE_RESTART = 1 <br />
Local Const $DISP_CHANGE_SUCCESSFUL = 0 <br />
Local Const $HWND_BROADCAST = 0xffff <br />
Local Const $WM_DISPLAYCHANGE = 0x007E <br />
If $i_Width = &quot;&quot; Or $i_Width = -1 Then $i_Width = @DesktopWidth ; default to current setting <br />
If $i_Height = &quot;&quot; Or $i_Height = -1 Then $i_Height = @DesktopHeight ; default to current setting <br />
If $i_BitsPP = &quot;&quot; Or $i_BitsPP = -1 Then $i_BitsPP = @DesktopDepth ; default to current setting <br />
If $i_RefreshRate = &quot;&quot; Or $i_RefreshRate = -1 Then $i_RefreshRate = @DesktopRefresh ; default to current setting <br />
Local $DEVMODE = DllStructCreate(&quot;byte[32];int[10];byte[32];int[6]&quot;) <br />
Local $B = DllCall(&quot;user32.dll&quot;, &quot;int&quot;, &quot;EnumDisplaySettings&quot;, &quot;ptr&quot;, 0, &quot;long&quot;, 0, &quot;ptr&quot;, DllStructGetPtr($DEVMODE)) <br />
If @error Then <br />
$B = 0 <br />
SetError(1) <br />
Return $B <br />
Else <br />
$B = $B[0] <br />
EndIf <br />
If $B &lt;&gt; 0 Then <br />
DllStructSetData($DEVMODE, 2, BitOR($DM_PELSWIDTH, $DM_PELSHEIGHT, $DM_BITSPERPEL, $DM_DISPLAYFREQUENCY), 5) <br />
DllStructSetData($DEVMODE, 4, $i_Width, 2) <br />
DllStructSetData($DEVMODE, 4, $i_Height, 3) <br />
DllStructSetData($DEVMODE, 4, $i_BitsPP, 1) <br />
DllStructSetData($DEVMODE, 4, $i_RefreshRate, 5) <br />
$B = DllCall(&quot;user32.dll&quot;, &quot;int&quot;, &quot;ChangeDisplaySettings&quot;, &quot;ptr&quot;, DllStructGetPtr($DEVMODE), &quot;int&quot;, $CDS_TEST) <br />
If @error Then <br />
$B = -1 <br />
Else <br />
$B = $B[0] <br />
EndIf <br />
Select <br />
Case $B = $DISP_CHANGE_RESTART <br />
$DEVMODE = &quot;&quot; <br />
Return 2 <br />
Case $B = $DISP_CHANGE_SUCCESSFUL <br />
DllCall(&quot;user32.dll&quot;, &quot;int&quot;, &quot;ChangeDisplaySettings&quot;, &quot;ptr&quot;, DllStructGetPtr($DEVMODE), &quot;int&quot;, $CDS_UPDATEREGISTRY) <br />
DllCall(&quot;user32.dll&quot;, &quot;int&quot;, &quot;SendMessage&quot;, &quot;hwnd&quot;, $HWND_BROADCAST, &quot;int&quot;, $WM_DISPLAYCHANGE, _ <br />
&quot;int&quot;, $i_BitsPP, &quot;int&quot;, $i_Height * 2 ^ 16 + $i_Width) <br />
$DEVMODE = &quot;&quot; <br />
Return 1 <br />
Case Else <br />
$DEVMODE = &quot;&quot; <br />
SetError(1) <br />
Return $B <br />
EndSelect <br />
EndIf <br />
EndFunc ;==&gt;_ChangeScreenRes&nbsp;<br />
<br />
<strong><font color="#000000">例子:</font><br />
</strong>--------------------------------------------------------------------<br />
#include &lt;ChangeScreenRes.AU3&gt; <br />
;设置为800X600 32位色,@75MHZ <br />
_ChangeScreenRes(800,600,32,75)<br />
--------------------------------------------------------------------<br />
<br />
<font color="#000000">这个就挺好用的。<br />
</font>例如：_ChangeScreenRes(1024, 768, 32, 85) <br />
下边我发个锁定刷新率的吧。当然你用软件也可以实现。 <br />
以下是用AU3来实现的。锁定了三个分辨率。 <br />
$MonitorClass = 'HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E96E-E325-11CE-BFC1-08002BE10318}' <br />
$i = 1 <br />
While $i &gt; 0 <br />
$Ver = RegEnumKey($MonitorClass, $i) <br />
If @error Then ExitLoop <br />
$MODES = $MonitorClass &amp; '\' &amp; $Ver <br />
$DriverDesc = RegRead ( $MODES, &quot;DriverDesc&quot; ) <br />
If $DriverDesc &lt;&gt; '' Then <br />
RegWrite ( $MODES &amp; '\MODES\1024,768' , &quot;Mode1&quot;, &quot;REG_SZ&quot;, '2.0-254.0,85.0-85.0,+,+' ) <br />
RegWrite ( $MODES &amp; '\MODES\640,480' , &quot;Mode1&quot;, &quot;REG_SZ&quot;, '2.0-254.0,85.0-85.0,+,+' ) <br />
RegWrite ( $MODES &amp; '\MODES\800,600' , &quot;Mode1&quot;, &quot;REG_SZ&quot;, '2.0-254.0,85.0-85.0,+,+' ) <br />
$i = $i + 1 <br />
Else <br />
RegDelete ( $MODES ) <br />
EndIf <br />
WEnd<br />
</font><br />
Q12 如何在界面显示GIF图片？ <br />
<br />
<a href="http://www.autoit.net.cn/viewthread.php?tid=324&amp;highlight=Shell.Explorer.2">http://www.autoit.net.cn/viewthread.php?tid=324&amp;highlight=Shell.Explorer.2</a><br />
<br />
Q12.1 AU3调用OBJ的一点点例子？&nbsp;<br />
<br />
<strong><font color="#ff0000"><a href="http://blog.18883.com/blog/download/279/" title="2.19 K, 下载次数:17" target="_blank">obj创建activex控件的一个例子.txt</a><br />
</font></strong><br />
Q13 如何在界面上显示SWF格式的文件？ <br />
<br />
参考Q12.1的例子 <br />
或者通过IE对象来实现，请参考:<br />
&nbsp;<br />
<strong><font color="#ff0000"><a href="http://blog.18883.com/blog/download/280/" title="1001 bytes, 下载次数:15" target="_blank">用au3打造flash播放器.rar</a></font></strong> <br />
<br />
Q14 如何控制摄像头？<br />
&nbsp;<br />
<strong><font color="#ff0000"><a href="http://blog.18883.com/blog/download/281/" title="3.28 K, 下载次数:15" target="_blank">au3控制摄像头拍摄图片.rar</a><br />
</font></strong><br />
Q15 如何界面中调用皮肤？<br />
&nbsp;<br />
极品皮肤控件－－SkinCrafter 2.7.2 破解版 <br />
准备找到完美破解版后再发出来，但是翻遍了国内外网站（包括阿拉伯网站）都没有找到完美破解版，大家就将就着用吧，皮肤自己去官方下载<br />
<br />
<strong><font color="#ff0000"><a href="http://blog.18883.com/blog/download/282/" title="280.01 K, 下载次数:11" target="_blank">skincrafter_dll.rar</a><br />
</font></strong><br />
<a href="http://www.autoit.net.cn/viewthread.php?tid=278&amp;extra=page%3D2">http://www.autoit.net.cn/viewthread.php?tid=278&amp;extra=page%3D2</a></p>]]></description>
			<link>http://blog.18883.com/blog/405</link>
			<category domain="http://blog.18883.com/blog/category/12">Autoit</category>
			<pubDate>2008-03-11 07:03</pubDate>
		</item>
		<item>
			<guid>http://blog.18883.com/blog/404</guid>
			<title>autoit轻松入门</title>
			<author>hopol</author>
			<description><![CDATA[<p>前言：据我了解需要编写AutoHotkey/AutoIt脚本来实现自动化操作的用户很多都是网管，其它则可能是一些个人用户，他们一般都具有相当的技术水平，而且都希望能借助脚本来完成某些以往需要人工操作的重复性劳动，但限于语言条件上的限制可能对官方的帮助文档有较难理解之处。为方便读者，我将从最简单的说起，每个示例尽可能同时给出相应的AHK和AU3版本代码。本文将尽可能用较通俗的语言描述，但并不打算讲解语法基础，所以不一定适合新手阅读。 <br />
<br />
文中涉及到的AHK/AU3版本： <br />
AutoHotkey （1.0.44 .08） <br />
AutoIt (3.2.10.0) <br />
一、关于脚本 <br />
1、什么是脚本？ <br />
这是个非常&ldquo;流行&rdquo;的术语了，通俗而言脚本（Script）一般都是指根据某种语法规则编写的具有特定格式的文本文件。可能大家已经听说过很多种脚本：VBScript、JScript、PHP、ASP、JSP、CGI、CS脚本，甚至游戏外挂脚本。 <br />
这些脚本文件都是可执行文件，可执行相应的操作。 <br />
AHK 脚本文件扩展名：*.ahk <br />
AU3 脚本文件扩展名：*.au3 <br />
<br />
<br />
2、脚本和程序的不同？ <br />
严格来说，所谓&ldquo;程序&rdquo;就是指以各种编程语言（比如说C/C++/C#/Delphi）编写、由编译器编译好后的二进制文件，一般就是机器代码，可由系统执行。而脚本则是只是些纯文本文件，包含了各种定义好的命令，这一点很像批处理文件。这样，我们得出一个简单的结论，那就是用户一般无法获得&ldquo;程序&rdquo;的源代码，我们只能进行反汇编把它逆向还原为汇编语言代码（或其它），当然，也有些&ldquo;程序&rdquo;是可以获得源代码的（比如Java）；脚本则是用户可直接查看的代码文件，而AHK/AU3则提供了把脚本文件&ldquo;转换&rdquo;成exe文件的方法。 <br />
<br />
<br />
3、脚本如何运行？ <br />
脚本是&ldquo;解释性&rdquo;的语言，它的运行依赖一个&ldquo;解释器&rdquo;，由这个解释器来&ldquo;翻译并解释&rdquo;脚本的每条命令（或者说代码），然后执行相应操作。如果不严格定义的话，HTML和Java都可以认为是解释性语言。AHK/AU3的主程序（分别是AutoHotkey.exe和AutoIt3.exe）就是它们的&ldquo;解释器&rdquo;，上面提到脚本可&ldquo;转换&rdquo;成可脱离相应的解释器而独立运行的exe可执行文件，而我们还可以使用相应的工具把它们&ldquo;还原&rdquo;成脚本文件，由此我们完全可以这么理解：脚本代码是被&ldquo;压缩&rdquo;到这个exe文件中，解释器也是在里面，在运行exe时实际上是先&ldquo;解压&rdquo;脚本代码然后运行解释器并解释该脚本。 <br />
<br />
<br />
4、如何创建脚本？ <br />
使用资源管理器的右键菜单即可创建相应脚本文件，或者新建一个文本文件后改扩展名即可。 <br />
5、稍微介绍一点语法规则？ <br />
A）对AHK而言，每个内建的功能都是以&ldquo;命令&rdquo;的形式提供： <br />
Command, param1, param2,&hellip; <br />
而AU3则以&ldquo;函数&rdquo;的形式提供： <br />
Function(param1, param2, &hellip;) <br />
命令或函数中被符号&ldquo;[&rdquo;和&ldquo;]&rdquo;围住的参数是可选参数，表示在使用这些命令或函数时可省略它们（不给出具体数值）。 <br />
若某个参数含有空格，则最好使用双引号围住该参数。 <br />
B）解释器自上而下（从第一行到最后一行）&ldquo;解释&rdquo;脚本的每行语句，除非遇到&ldquo;Return&rdquo;、&ldquo;Goto&rdquo;、&ldquo;Gosub&rdquo;、&ldquo;Exit&rdquo;等语句、函数、热键或其它能使脚本&ldquo;跳&rdquo;到某个标识符的条件成立。 <br />
C）关键字和标识符（包括变量名、命令名、函数名等）都不区分大小写。 <br />
<br />
二、运行程序或打开文件 <br />
1、运行程序 <br />
Run t命令或者函数用来运行外部可执行文件，AHK还可利用它来直接打开文件。 <br />
AHK： <br />
Run, 目标文件 [, 工作目录, Max|Min|Hide|UseErrorLevel, 输出PID变量] <br />
AU3： <br />
Run ( &quot;文件名&quot; [, &quot;工作目录&quot; [, 标志]] ) <br />
【示例 2.1.1 】 <br />
AHK： <br />
Run, Notepad.exe <br />
AU3： <br />
Run(&quot;Notepad.exe&quot;) <br />
上面的示例中都没有给出程序&ldquo;Notepad.exe&rdquo;的路径，为什么仍能执行？这是因为它们都会自动在脚本所在目录下搜寻目标文件，如有则运行，否则就到系统文件夹（%PATH%）中搜寻。 <br />
注意： <br />
A）某些程序必须给定&ldquo;工作目录&rdquo;才能成功运行！ <br />
B）给出完整的文件路径有助于轻微提高程序的可靠性。 <br />
C）AHK的Run命令可以用来运行程序和直接打开文件，而AU3的Run函数则只能用来运行程序（可执行文件）或传递参数让某个程序打开目标文件。 <br />
当然，运行程序的功能还不仅仅是这么简单，我们还可以指定运行程序的初始状态，比如让运行的记事本窗口以最大化状态显示（或者最小化、隐藏）： <br />
【示例 2.1.2 】 <br />
AHK： <br />
Run, Notepad.exe, , Max <br />
AU3： <br />
Run(&quot;Notepad.exe&quot;, &quot;&quot;, @SW_MAXIMIZE) <br />
<br />
2、打开文件 <br />
前面已经提到，AHK的Run命令可以直接打开文件，而AU3的Run函数则只能用来运行程序，因此在打开文件的方式上有点不同：AHK脚本中可直接给出目标文件，而AHK将自动运行该文件的关联程序来打开它；而AU3则必须由用户自己传递参数让某个程序打开目标文件。 <br />
【示例 2.2.1 】 <br />
AHK： <br />
Run, MyFile.txt <br />
Run, Notepad.exe MyFile.txt <br />
AU3： <br />
Run(&quot;Notepad.exe MyFile.txt&quot;) <br />
<br />
3、以命令行形式运行程序 <br />
可以考虑运行系统的命令行解释器（cmd.exe/command.com），然后指定要执行的命令并传递参数。 <br />
假设我们要执行命令&ldquo;dir C:\WINDOWS\system 32&rdquo; ，用以列出指定目录的所有文件及子目录。 <br />
【示例 2.3.1 】 <br />
AHK： <br />
Run, %ComSpec% /k dir C:\WINDOWS\system32 <br />
AU3： <br />
Run(@ComSpec &amp; &quot; /k dir C:\WINDOWS\system32&quot;) <br />
注意： <br />
A）ComSpec是脚本内建的用以指示命令行解释器位置的变量或宏。 <br />
B）/k 参数表示&ldquo;执行字符串指定的命令但保留&rdquo;，若改为 /c 则表示&ldquo;执行字符串指定的命令然后终断&rdquo;。对此比较直观的解释是 /k 将在执行完命令后保留命令提示窗口，而 /c 则将在执行完命令之后关闭命令提示窗口。 <br />
C）符号&ldquo;&amp;&rdquo;是AU3定义的字符串连接符。 <br />
<br />
4、特殊应用 <br />
A）打开网页 <br />
【示例 2.4.1 】 <br />
<br />
AHK： <br />
Run, www.18883.com <br />
Run, %A_ProgramFiles%\Internet Explorer\IEXPLORE.EXE www.18883.com <br />
AU3： <br />
Run(@ProgramFilesDir &amp; &quot;\Internet Explorer\IEXPLORE.EXE www.18883.com&quot;) <br />
B）打开特殊文件夹 <br />
系统的某些特殊文件夹被定义了相应的CLSID（请查看帮助文档），我们可利用它来打开相应的文件夹，比如打开回收站： <br />
【示例 2.4.2 】 <br />
<br />
AHK： <br />
Run ::{645ff040-5081-101b -9f 08-00aa 002f 954e} <br />
AU3： <br />
不适用！ <br />
C）运行控制面板工具 <br />
微软已经为我们提供了通过命令行打开控制面板某个工具或项目的方式，比如打开系统属性窗口： <br />
【示例 2.4.3 】 <br />
<br />
AHK： <br />
Run control sysdm.cpl <br />
AU3： <br />
Run(&quot;control sysdm.cpl&quot;) <br />
关于访问控制面板项目的详细介绍请查看此文：http://blog.18883.com/blog/403/ <br />
D）指定搜索位置并打开搜索窗口 <br />
假设我们要打开一个搜索窗口，而且要指定搜索位置，比如C:\： <br />
【示例 2.4.4 】 <br />
<br />
AHK： <br />
Run, find C:\ <br />
AU3： <br />
不适用！ <br />
E）显示指定文件的属性窗口 <br />
假设我们要打开文件&ldquo;MyFile.txt&rdquo;的属性窗口，则使用关键字properties 然后接上目标文件即可： <br />
【示例 2.4.5 】 <br />
<br />
AHK： <br />
Run, properties MyFile.txt <br />
AU3： <br />
不适用！ <br />
注意：AHK在退出前将自动关闭打开的属性窗口！ <br />
F）用&ldquo;资源管理器&rdquo;打开指定文件夹 <br />
我们知道使用Run, explorer C: 或Run(&quot;explorer C:&quot;) 即可打开指定的文件夹，可是有时候我们需要在资源管理器中打开它，这时可使用关键字 explore： <br />
【示例 2.4.6 】 <br />
<br />
AHK： <br />
Run, explore C: <br />
AU3： <br />
run(&quot;explorer.exe /e,C:\&quot;) <br />
G）打印指定文件 <br />
要打印指定文件，可使用关键字 print： <br />
【示例 2.4.7 】 <br />
<br />
AHK： <br />
Run, print MyFile.txt <br />
AU3： <br />
不适用！ <br />
<br />
<br />
F）用&ldquo;资源管理器&rdquo;打开指定文件夹 <br />
我们知道使用Run, explorer C: 或Run(&quot;explorer C:&quot;) 即可打开指定的文件夹，可是有时候我们需要在资源管理器中打开它，这时可使用关键字 explore： <br />
【示例 2.4.6 】 <br />
<br />
AHK： <br />
Run, explore C: <br />
AU3： <br />
不适用！ <br />
<br />
<br />
run(&quot;explorer.exe /e,d:\&quot;) <br />
<br />
这样就可以做到你说的树状型打开目标文件夹了! <br />
<br />
注意：窗口标题和窗口文本参数总是对大小写敏感的。 <br />
1、等待窗口系列命令/函数 <br />
AHK和AU3都提供了用法类似的一组窗口等待命令/函数：WinWait/WinWaitActive/WinWaitClose。 <br />
它们分别用于等待窗口出现、等待窗口被激活、等待窗口被关闭。由于这些命令/函数的参数类似，现仅以WinWait为例说明。 <br />
AHK： <br />
WinWait [, 窗口标题, 窗口文本, 超时时间, 排除标题, 排除文本] <br />
AU3： <br />
WinWait ( &quot;窗口标题&quot; [, &quot;窗口文本&quot; [, 超时时间]] ) <br />
WinWait 的作用是在目标窗口出现之前不再执行后面的所有语句。 <br />
假设我们要运行记事本程序，并在其窗口出现时提示用户： <br />
【示例 3.1.1 】 <br />
<br />
AHK： <br />
Run Notepad <br />
WinWait, 无标题 - 记事本 <br />
MsgBox 记事本窗口已被打开！ <br />
AU3： <br />
Run(&quot;Notepad&quot;) <br />
WinWait(&quot;无标题 - 记事本&quot;) <br />
MsgBox(0, &quot;&quot;, &quot;记事本窗口已被打开！&quot;) <br />
<br />
2、激活窗口相关命令/函数 <br />
让目标窗口成为活动窗口的办法就是激活它，可用的命令/函数是WinActivate： <br />
AHK： <br />
WinActivate [,窗口标题, 窗口文本, 排除标题, 排除文本] <br />
AU3： <br />
WinActivate ( &quot;窗口标题&quot; [, &quot;窗口文本&quot;] ) <br />
<br />
3、关闭窗口 <br />
关闭窗口有两种方式，一种是正常的关闭窗口（WinClose），另一种则是强行关闭窗口（WinKill）： <br />
AHK： <br />
WinClose/WinKill [,窗口标题, 窗口文本, 超时时间,, 排除标题, 排除文本] <br />
AU3： <br />
WinClose/WinKill ( &quot;窗口标题&quot; [, &quot;窗口文本&quot;] ) <br />
<br />
现在我们已经可以实现一个比较简单的功能了，比如我们可以打开系统属性窗口并等待其出现，窗口出现后激活它，接着等待3秒再关闭它： <br />
【示例 3.1.2 】 <br />
<br />
AHK： <br />
Run, Sysdm.cpl <br />
WinWait, 系统属性 <br />
WinActivate, 系统属性 <br />
WinWaitActive, 系统属性 <br />
Sleep, 3000 <br />
WinClose, 系统属性 <br />
WinWaitClose, 系统属性 <br />
AU3： <br />
Run(&quot;Control Sysdm.cpl&quot;) <br />
WinWait(&quot;系统属性&quot;) <br />
WinActivate(&quot;系统属性&quot;) <br />
WinWaitActive(&quot;系统属性&quot;) <br />
Sleep(3000) <br />
WinClose(&quot;系统属性&quot;) <br />
WinWaitClose(&quot;系统属性&quot;) <br />
<br />
建议：如果程序中频繁地出现要用到这些窗口标题的地方，会带来一个问题：脚本的可读性，也许你会想，这不是很直观吗？可问题是如果这个重复出现的窗口标题是个很长的字符串呢？这将严重影响整个代码的排版美观。而且我们也无从了解这些窗口标题的&ldquo;来头&rdquo;，不知道这个窗口标题究竟是怎么来的。而如果我们定义一个变量（假设变量名是&ldquo;AppWindow1&rdquo;）保存这个窗口标题，我们就能在命令/函数中用变量来表示它，这样就达到了让代码用意更清晰一点的目的。另外，就算目标软件因某些原因（比如升级）而改变了它的窗口标题，我们也能很方便地作出修改。 <br />
<br />
4、更准确的标识窗口的方法（主要针对AHK脚本） <br />
程序在运行时起码会有一个进程，如果能获得这个进程ID就能在一定程度上保证对窗口的准确标识。另外，每个窗口都有定义窗口类名（Class，比如说记事本窗口的类名就是Notepad），所以我们可以以此排除与目标窗口不同的其它窗口类。其实，我们还有一个更准确的方法： <br />
每个窗口（包括控件在内）都被Windows指派了一个可区别于其它窗口的唯一的标识符（ID），我们称之为窗口句柄（HWND）。 <br />
直接给定窗口标题来表示窗口的一个缺点就是无法保证在脚本运行的过程中始终以该窗口为操作目标，因为在这个过程中很有可能会有其它&ldquo;同名&rdquo;窗口（或者说满足匹配条件的窗口）出现，而如果我们使用这个标识符来表示窗口自然就能保证命令/函数的操作窗口总是同一个窗口了。 <br />
我们先来了解一下获得窗口句柄的命令/函数： <br />
AHK： <br />
WinGet[, 输出变量, ID, 窗口标题, 窗口文本, 排除标题, 排除文本] <br />
AU3： <br />
WinGetHandle ( &quot;窗口标题&quot; [, &quot;窗口文本&quot;] ) <br />
其中WinGet获得的窗口ID将通过&ldquo;输出变量&rdquo;返回，而WinGetHandle的返回值就是获得的窗口ID。 <br />
<br />
我们在进行自动化操作时是要先运行某个程序，如何获得这个程序成功运行后显示的窗口句柄？一个比较保险的办法是先获得这个程序的进程ID，然后根据这个进程ID获得它的窗口句柄，AHK支持使用进程ID作为窗口标题使用；但AU3不支持这样使用，只能先获得该窗口的类名再根据该类名来获得窗口句柄（不够保险）： <br />
【示例 3.1.3 】 <br />
AHK： <br />
Run, NotePad, , , ThisPID <br />
WinWait, ahk_pid %ThisPID% <br />
<br />
;这里的ahk_pid表明跟在后面的变量是进程ID <br />
WinGet, ThisID, ID, ahk_pid %ThisPID% <br />
<br />
;ThisID将保存获得的窗口句柄 <br />
AU3： <br />
<br />
Opt(&quot;WinTitleMatchMode&quot;, 4) <br />
Run(&quot;Notepad&quot;) <br />
$handle = WinGetHandle(&quot;classname=Notepad&quot;) <br />
现在暂且先忘记了AU3吧，因为它的窗口函数一般都不支持使用窗口句柄作为（窗口标题）参数。 <br />
至于如何在AHK中使用窗口句柄，简单的说，凡是有&ldquo;窗口标题&rdquo;参数的命令就可以用窗口句柄来代替，比如： <br />
【示例 3.1.4 】 <br />
AHK： <br />
Run, Notepad, , , ThisPID <br />
<br />
;先获得运行的记事本程序的进程ID <br />
WinWait, 无标题 - 记事本 ahk_pid %ThisPID% <br />
<br />
;等待该进程窗口的出现 <br />
WinGet, ThisHWND, ID, 无标题 - 记事本 ahk_pid %ThisPID% <br />
<br />
;获得窗口句柄 <br />
WinActivate, ahk_id %ThisHWND% <br />
;这里的ahk_id表明跟在后面的变量是窗口句柄 <br />
WinWaitActive, ahk_id %ThisHWND% <br />
Sleep, 3000 <br />
WinClose, ahk_id %ThisHWND% <br />
WinWaitClose, ahk_id %ThisHWND% <br />
<br />
1、模拟鼠标点击（按钮等）控件 <br />
既然是模拟用户操作，自然就包括了模拟鼠标点击在内。 <br />
适用命令/函数：Click/MouseClick/ControlClick <br />
其中Click/MouseClick用来模拟用户的物理操作（点击），把鼠标点击事件发送到指定坐标位置（相对当前窗口或绝对位置）上，但这种方法并不能保证100%的准确性，屏幕分辨率、用户干扰和系统环境等都会影响到它们的执行结果，而ControlClick则直接把鼠标点击事件发送到目标窗口的目标控件上，因而更准确，一般我们不考虑使用坐标位置方式的点击，下面仅以ControlClick为例说明： <br />
AHK： <br />
ControlClick [, 目标控件或坐标位置, 窗口标题, 窗口文本, 鼠标按钮, 点击次数, 选项,排除标题, 排除文本] <br />
AU3： <br />
ControlClick ( &quot;窗口标题&quot;, &quot;窗口文本&quot;, 控件ID [, 按钮] [, 点击次数]] ) <br />
对AHK而言，&ldquo;目标控件&rdquo;参数是指要点击的控件的类别名（ClassNN）或控件文本，另外还可以使用控件句柄（若用的是控件句柄则第一个参数需留空，并在第二个参数中使用ahk_id %控件句柄%）。 <br />
<br />
Q：用什么工具来获得目标控件的这些信息呢？ <br />
A：AHK用户请使用 AutoIt3 Window Spy，AU3用户则请使用AutoIt Window Info，你可以在相应的开始菜单项目里找到它们，或者到安装目录下寻找。 <br />
<br />
Q：如何使用这两个工具？ <br />
A：先打开你要进行操作的目标窗口，然后运行 AutoIt3 Window Spy 或 AutoIt Window Info，接下来就是把鼠标移到目标控件上（比如某个按钮）： <br />
AutoIt3 Window Spy 使用演示截图：<br />
<br />
<a href="http://blog.18883.com/blog/images/268/" rel="lightbox" title="Hopol's Blog" target="_blank"><img src="http://blog.18883.com/blog/attachments/date_200803/thumb_e9478327126fff04a5bd7a04b540e12d.jpg" border="0" alt="大小: 192.54 K&#13;尺寸: 150 x 135&#13;浏览: 5 次&#13;点击打开新窗口浏览全图" width="150" height="135" /></a><br />
<br />
AutoIt Window Info 使用演示截图：<br />
<br />
<a href="http://blog.18883.com/blog/images/269/" rel="lightbox" title="Hopol's Blog" target="_blank"><img src="http://blog.18883.com/blog/attachments/date_200803/thumb_3dbe1f5a0eb0342829c1d4e515facb8b.jpg" border="0" alt="大小: 180.34 K&#13;尺寸: 150 x 135&#13;浏览: 3 次&#13;点击打开新窗口浏览全图" width="150" height="135" /></a><br />
<br />
现在我们假设已打开并激活了&ldquo;系统属性&rdquo;窗口，而任务是点击它的&ldquo;确定&rdquo;按钮，则可用以下几种方法： <br />
【示例4.1.1】 <br />
AHK： <br />
ControlClick, 确定, 系统属性 <br />
ControlClick, Button2, 系统属性 <br />
<br />
<br />
<br />
<br />
<br />
AU3： <br />
<br />
ControlClick(&quot;系统属性&quot;, &quot;&quot;, 1) <br />
ControlClick(&quot;系统属性&quot;, &quot;&quot;, &quot;Button2&quot;) <br />
ControlClick(&quot;系统属性&quot;, &quot;&quot;, &quot;确定&quot;) <br />
提醒：即使目标窗口或控件是隐藏状态，ControlClick命令还是可以&ldquo;点击&rdquo;目标控件，但不能保证成功率。 <br />
<br />
2、模拟键盘操作 <br />
键盘也是我们在操作窗口时会用到的工具，比如说在安装软件的时候经典的&ldquo;一路回车大法&rdquo;。下面简单介绍一下模拟键盘操作的方法。 <br />
Send <br />
这个是最直接的方法，就是模拟用户按键行为，直接发送键击命令，用法请参考官方文档，在此不予说明。 <br />
最简单的应用――按回车： <br />
AHK： <br />
<br />
<br />
Run, Control Sysdm.cpl <br />
WinWait, 系统属性 <br />
Send, {Enter} <br />
AU3： <br />
<br />
Run(&quot;Control Sysdm.cpl&quot;) <br />
WinWait(&quot;系统属性&quot;) <br />
Send(&quot;{Enter}&quot;) <br />
<br />
常见的组合键――Alt+X / Ctrl+N等等，在安装软件的时候经常会有提供一个按钮&ldquo;下一步(N)&rdquo;，表示按下Alt+N即可触发等同于点击该按钮的效果，其它的可触类旁通。以打开记事本窗口的&ldquo;文件&rdquo;菜单为例： <br />
AHK： <br />
<br />
Run, Notepad <br />
WinWait, 无标题 - 记事本 <br />
WinActivate, 无标题 - 记事本 <br />
WinWaitActive, 无标题 - 记事本 <br />
Send, !f <br />
AU3： <br />
<br />
<br />
Run(&quot;Notepad&quot;) <br />
WinWait(&quot;无标题 - 记事本&quot;) <br />
WinActivate(&quot;无标题 - 记事本&quot;) <br />
WinWaitActive(&quot;无标题 - 记事本&quot;) <br />
Send(&quot;!f&quot;)<br />
<br />
五、自动化操作轻松入门系列5<br />
<br />
控件操作 <br />
然而，在真正实现自动化时仅靠上面的技术往往难以达到预期目的。下面开始进入最为重要的控件操作。 <br />
1、设置文本 <br />
在安装软件的过程中用户往往需要提供一些必需信息，比如安装目录。很多用户并不喜欢把软件安装到默认的C盘而更愿意把它们安装到别的地方，那么脚本究竟提供了什么方法能让我们修改如下图所示的路径呢？<br />
<br />
<a href="http://blog.18883.com/blog/images/270/" rel="lightbox" title="Hopol's Blog" target="_blank"><img src="http://blog.18883.com/blog/attachments/date_200803/thumb_a71e4b17430ddd6c967291d0666fec6a.jpg" border="0" alt="大小: 15.85 K&#13;尺寸: 150 x 27&#13;浏览: 2 次&#13;点击打开新窗口浏览全图" width="150" height="27" /></a><br />
<br />
我们先用上文中提到的AutoIt3 Window Spy 或 AutoIt Window Info 来获得这个路径的编辑框的信息，假设这个窗口的标题为Setup foobar，该路径编辑框的类名是Edit1，而我们需要把它改成&ldquo;D:\foobar2000&rdquo;，接下来就可以使用下列命令/函数来设置它的文本了： <br />
AHK： <br />
ControlSetText [, 目标控件, 新文本, 窗口标题, 窗口文本, 排除标题, 排除文本] <br />
AU3： <br />
ControlSetText ( &quot;窗口标题&quot;, &quot;窗口文本&quot;, 控件ID, &quot;新文本&quot;) <br />
具体用法如下： <br />
【示例5.1.1】 <br />
AHK： <br />
ControlSetText, Edit1, D:\foobar2000, Setup foobar <br />
AU3： <br />
<br />
ControlSetText(&quot;Setup foobar&quot;, &quot;&quot;, &quot;Edit1&quot;, &quot;D:\foobar2000&quot;) <br />
<br />
2、选中和取消选中单选框和复选框项目 <br />
有时程序为了满足用户的个性化设置而需要用户提供更多的信息，我们经常会遇到这样的情况：<br />
<br />
<a href="http://blog.18883.com/blog/images/271/" rel="lightbox" title="Hopol's Blog" target="_blank"><img src="http://blog.18883.com/blog/attachments/date_200803/thumb_96b5201bdbd2b0ac0111f945ad8b6baa.jpg" border="0" alt="大小: 41.26 K&#13;尺寸: 150 x 118&#13;浏览: 2 次&#13;点击打开新窗口浏览全图" width="150" height="118" /></a><br />
<br />
如何保证选中所需项目并取消某些项目呢？ <br />
下面先来介绍AHK和AU3中用来对控件进行各种属性设置的命令/函数： <br />
AHK： <br />
Control [, 命令, 值, 目标控件, 窗口标题, 窗口文本, 排除标题, 排除文本] <br />
AU3： <br />
ControlCommand ( &quot;窗口标题&quot;, &quot;窗口文本&quot;, 控件ID, &quot;命令&quot;, &quot;选项&quot;) <br />
<br />
其中，&ldquo;命令&rdquo;就是让我们指定要进行何种设置的参数。对这些单选框/复选框按钮来说，适用的命令是&ldquo;Check&rdquo;和&ldquo;UnCheck&rdquo;。 <br />
假设这个窗口的标题是为Setup foobar，我们打算进行下来操作： <br />
选中它的&ldquo;桌面&rdquo;复选框（Button5）、取消选中&ldquo;快速启动栏&rdquo;复选框（Button7）； <br />
选中&ldquo;0.7x&rdquo;单选框（Button14）。 <br />
<br />
那么具体的用法示例如下： <br />
【示例5.1.2】 <br />
AHK： <br />
Control, Check, , Button5, foobar <br />
Control, UnCheck, , Button7, foobar <br />
Control, Check, , Button14, foobar <br />
AU3： <br />
<br />
ControlCommand(&quot;foobar&quot;, &quot;&quot;, &quot;Button5&quot;, &quot;Check&quot;, &quot;&quot;) <br />
ControlCommand(&quot;foobar&quot;, &quot;&quot;, &quot;Button7&quot;, &quot;UnCheck&quot;, &quot;&quot;) <br />
ControlCommand(&quot;foobar&quot;, &quot;&quot;, &quot;Button14&quot;, &quot;Check&quot;, &quot;&quot;) <br />
<br />
2、选择下拉列表的项目 <br />
相信你肯定遇到过下面这种情况：&nbsp;<br />
<br />
<a href="http://blog.18883.com/blog/images/272/" rel="lightbox" title="Hopol's Blog" target="_blank"><img src="http://blog.18883.com/blog/attachments/date_200803/thumb_4125b7742a11dc512091d2a35e5642cd.jpg" border="0" alt="大小: 33.9 K&#13;尺寸: 150 x 82&#13;浏览: 1 次&#13;点击打开新窗口浏览全图" width="150" height="82" /></a><br />
<br />
问题又来了：如何选中自己需要的项目？ <br />
答案仍是使用上面提到的命令/函数。对这种控件而言，AHK适用的命令是&ldquo;Choose, N&rdquo;和&ldquo;ChooseString, String&rdquo;，分别表示选中第N个项目和选中与字符串String匹配的项目；而AU3适用的命令则是&ldquo;SetCurrentSelection, N&rdquo;和&ldquo;SelectString, String&rdquo;，分别表示选中第N+1（注意是从零开始表示！）个项目和选中与字符串String匹配的项目。 <br />
<br />
假设我们要选中第五个项目&ldquo;简体中文&rdquo;，那么具体的用法示例如下： <br />
<br />
【示例5.1.3】 <br />
AHK： <br />
Control, Choose, 5, ComboBox1, Installer <br />
Control, ChooseString, 简体中文, ComboBox1, Installer <br />
AU3： <br />
ControlCommand(&quot;Installer&quot;, &quot;&quot;, &quot;ComboBox1&quot;, &quot;SetCurrentSelection&quot;, 4) <br />
ControlCommand(&quot;Installer&quot;, &quot;&quot;, &quot;ComboBox1&quot;, &quot;SelectString&quot;, &quot;简体中文&quot;)</p>]]></description>
			<link>http://blog.18883.com/blog/404</link>
			<category domain="http://blog.18883.com/blog/category/12">Autoit</category>
			<pubDate>2008-03-11 06:37</pubDate>
		</item>
		<item>
			<guid>http://blog.18883.com/blog/402</guid>
			<title>中文Autolt 3编辑器，完成进度25% !!! [转]</title>
			<author>hopol</author>
			<description><![CDATA[<p><font color="#ff0000"><strong>声明在先：<br />
</strong></font>1、本软件完成以后，免费（乐意接受赞助）但不开源。 <br />
2、软件是利用业余时间写的，工作忙了可能进度就慢些，请大家谅解，不要催促。 <br />
3、软件不定时在2楼会上传一些测试版本，希望大家有时间帮着测试测试，找找虫子，以便我修改，先谢谢了！ <br />
4、<font color="#0000ff">命令库</font>不全，只有一小部分命令（主要是没有时间打，好多啊！），会上传<font color="#0000ff">命令编辑工具</font>，有时间的朋友如果愿意可以帮着补上<font color="#0000ff">命令库</font>。 <br />
...... <br />
<br />
<br />
<br />
<strong><font color="#ff0000">开发进度：</font></strong><br />
2007年12月28日----&gt;开始收集AU3相关资料，考察编写AU3编辑器的可能性。 <br />
2008年01月02日----&gt;完成框架设想及开发流程。 <br />
2008年01月03日----&gt;开始编辑代码，基本完成软件界面主框架设计。 <br />
2008年01月11日----&gt;完成命令库编辑器组件。论坛开帖。 <br />
2008年01月17日----&gt;完成英文代码检查、运行、编译。 <br />
2008年01月23日----&gt;发布雏形版本v0.01 <br />
......&nbsp;<br />
<br />
<br />
<br />
<strong><font color="#ff0000">主程序雏形版本-0.01 <br />
<br />
</font></strong>(目前只完成了代码的检查、及编译功能) <br />
<br />
这个版本未解决的问题： <br />
<br />
1、中文命令还没有实现，目前只能英文。 <br />
2、大部分预想功能还没有完成，如保存到网络等 <br />
3、命令库还是只有6个，实在没时间打(有2个志愿着报名输命令库了，但现在联系不上。) <br />
4、软件编译时，版本信息还没有实现添加，目前只能支持图标的编译，详细看例程目录下例子。 <br />
<br />
如要正常检查代码、编译程序或使用工具，请将本目录下的所有文件拷贝到AU3安装目录下；或者将AU3 <br />
安装目录下的：Aut2Exe目录及文件Au3Check.exe、Au3Check.dat、AutoIt3.exe、Au3Info.exe拷贝到本 <br />
目录下即可。 <br />
如果您已经使用之前发布的命令库编辑器编辑了自己的命令库，可将你的命令库文件sjk.dat替换本目录 <br />
下的同名文件。 <br />
<br />
<strong>下载地址:&nbsp;&nbsp;<a href="http://blog.18883.com/blog/download/266/" title="1.91 M, 下载次数:74" target="_blank">中文au3编辑器.rar</a></strong><br />
<br />
<br />
<font color="#ff0000"><strong><font color="#0000ff">主程序界面:英文代码编写方式</font></strong>&nbsp;<br />
</font><a href="http://blog.18883.com/blog/images/263/" rel="lightbox" title="Hopol's Blog" target="_blank"><img src="http://blog.18883.com/blog/attachments/date_200803/thumb_4dab7f96779ca35ef797531f8b9fa976.jpg" border="0" alt="大小: 87.92 K&#13;尺寸: 150 x 106&#13;浏览: 13 次&#13;点击打开新窗口浏览全图" width="150" height="106" /></a><br />
<br />
<strong><font color="#0000ff">主程序界面:中文代码编写方式(取拼音首字母方式)<br />
</font></strong><a href="http://blog.18883.com/blog/images/264/" rel="lightbox" title="Hopol's Blog" target="_blank"><img src="http://blog.18883.com/blog/attachments/date_200803/thumb_cbeffd9d0f29a92ab28274221ae8afe5.jpg" border="0" alt="大小: 92.06 K&#13;尺寸: 150 x 106&#13;浏览: 12 次&#13;点击打开新窗口浏览全图" width="150" height="106" /></a><br />
<br />
<br />
<br />
<strong><font color="#ff0000">命令库编辑器组件：测试版本 2.0 <br />
</font></strong><br />
说 明：这个组件基本已经完成，在我本机上运行通过（测试系统：Windows XP SP2）,发上来大家看看！ <br />
当前状态：招募志愿者，填写命令库。有兴趣可以报名！一人一块的话可以快点完成命令库。切记先 报名，然后统一分配输入内容，以免重复输入。<br />
<br />
<strong>下载地址:&nbsp;<a href="http://blog.18883.com/blog/download/267/" title="700.46 K, 下载次数:15" target="_blank">命令库编辑器.rar</a><br />
</strong><br />
<font color="#0000ff"><strong>命令库编辑器主界面</strong></font>&nbsp;<br />
<a href="http://blog.18883.com/blog/images/265/" rel="lightbox" title="Hopol's Blog" target="_blank"><img src="http://blog.18883.com/blog/attachments/date_200803/thumb_22dd3060ec84c1ea92579f7b0954de57.jpg" border="0" alt="大小: 92.21 K&#13;尺寸: 150 x 96&#13;浏览: 10 次&#13;点击打开新窗口浏览全图" width="150" height="96" /></a></p>]]></description>
			<link>http://blog.18883.com/blog/402</link>
			<category domain="http://blog.18883.com/blog/category/12">Autoit</category>
			<pubDate>2008-03-11 06:20</pubDate>
		</item>
		<item>
			<guid>http://blog.18883.com/blog/401</guid>
			<title>AUTOIT汉化版本下载</title>
			<author>hopol</author>
			<description><![CDATA[<p><a href="http://blog.18883.com/blog/images/262/" rel="lightbox" title="Hopol's Blog" target="_blank"><img src="http://blog.18883.com/blog/attachments/date_200803/thumb_3b48b198e12060301ef0246fc261be3f.jpg" border="0" alt="大小: 5.71 K&#13;尺寸: 150 x 63&#13;浏览: 5 次&#13;点击打开新窗口浏览全图" width="150" height="63" /></a><br />
<br />
<font size="2">3.2.11.0.1(正式版) 的 FIX 版本 (2008-2-5)<br />
http://www.autoit.net.cn/autoitv3/3.2.11.0.1fix.exe<br />
<br />
</font><font size="2"><font color="#ff0000"><strong>3.2.11.1.1 (2008-2-13重新生成)<br />
</strong></font>http://www.autoit.net.cn/autoitv3/3.2.11.1.1.exe<br />
<br />
</font><font size="2"><font color="#ff0000"><strong>3.2.11.1.2 预览版本(2008-2-29)<br />
</strong></font>http://www.autoit.net.cn/autoitv3/3.2.11.1.2p.exe<br />
<br />
如果您是一名新手，thesnow建议您下载最新的版本，不然以后转换库函数是非常麻烦的。<br />
<br />
<br />
<font color="#ff0000"><strong>注意：</strong></font>3.2.11.0.1又改变了包含库，是适应还是继续使用老版本？（虽然现在是越来越规范了。）<br />
<br />
</font><font size="2"><font color="#0000ff"><strong>新版本预告：<br />
汉化版本大约会在3.2.11.0.2开始重新支持多个库的使用.（3.2.9.3前/3.2.9.3+/3.2.11.0+）已经完成<br />
支持多编译器同时使用.（3.2.11.0.2或者3.2.11.1.1） 已经完成<br />
对帮助资源完全重新汉化（这次变化太大了.特别是GUI方面）</strong></font><br />
<br />
</font><font size="2"><strong><font color="#ff0000">历史版本下载:<br />
</font></strong>3.2.2.0.1 <br />
http://www.autoit.net.cn/old/3.2.2.0.1.exe <br />
3.2.3.6.3 <br />
http://www.autoit.net.cn/old/3.2.3.6.3.rar <br />
3.2.3.9.1 <br />
http://www.autoit.net.cn/old/3.2.3.9.1.rar <br />
3.2.3.10.?: <br />
http://www.autoit.net.cn/old/3.2.3.10.rar <br />
3.2.3.11.1 <br />
http://www.autoit.net.cn/old/3.2.3.11.1.exe <br />
3.2.3.12.1 <br />
http://www.autoit.net.cn/old/3.2.3.12.1.exe <br />
3.2.3.12.2 <br />
http://www.autoit.net.cn/old/3.2.3.12.2.exe <br />
3.2.3.13.1 <br />
http://www.autoit.net.cn/old/3.2.3.13.1.exe <br />
3.2.3.14.1 <br />
http://www.autoit.net.cn/old/3.2.3.14.1.exe <br />
3.2.4.0.? <br />
http://www.autoit.net.cn/old/3.2.4.0.exe <br />
3.2.4.2.? <br />
http://www.autoit.net.cn/old/3.2.4.2.exe <br />
3.2.4.8.1: <br />
http://www.autoit.net.cn/old/3.2.4.8.1.rar <br />
3.2.4.9.1 <br />
http://www.autoit.net.cn/old/3.2.4.9.1.rar <br />
3.2.4.9.2 <br />
http://www.autoit.net.cn/old/3.2.4.9.2.exe <br />
3.2.5.0.1 <br />
http://www.autoit.net.cn/old/3.2.5.0.1.exe <br />
3.2.5.0.2 <br />
http://www.autoit.net.cn/old/3.2.5.0.2.exe <br />
3.2.5.0.3 <br />
http://www.autoit.net.cn/old/3.2.5.0.3.exe <br />
3.2.5.1.1 <br />
http://www.autoit.net.cn/old/3.2.5.1.1.exe <br />
3.2.5.3.1 <br />
http://www.autoit.net.cn/old/3.2.5.3.1.exe <br />
3.2.5.5.1 <br />
http://www.autoit.net.cn/old/3.2.5.5.1.exe <br />
3.2.5.6.1 <br />
http://www.autoit.net.cn/old/3.2.5.6.1.exe <br />
3.2.5.7.1 <br />
http://www.autoit.net.cn/old/3.2.5.7.1.exe <br />
<br />
3.2.7.0.1 <br />
http://www.autoit.net.cn/old/3.2.7.0.1.exe <br />
3.2.7.5.1 <br />
http://www.autoit.net.cn/old/3.2.7.5.1.exe <br />
3.2.8.0.1 <br />
http://www.autoit.net.cn/old/3.2.8.0.1.exe <br />
3.2.9.1.1 <br />
http://www.autoit.net.cn/old/3.2.9.1.1.exe <br />
3.2.9.3.1 <br />
http://www.autoit.net.cn/old/3.2.9.3.1.exe <br />
3.2.9.8.1 <br />
http://www.autoit.net.cn/old/3.2.9.8.1.exe <br />
3.2.9.8.2 <br />
http://www.autoit.net.cn/old/3.2.9.8.2.exe <br />
3.2.9.14.1 <br />
http://www.autoit.net.cn/old/3.2.9.14.1.exe <br />
3.2.9.14.2 <br />
http://www.autoit.net.cn/old/3.2.9.14.2.exe <br />
3.2.10.0.1 <br />
http://www.autoit.net.cn/old/3.2.10.0.1.exe <br />
3.2.10.0.1 <br />
http://www.autoit.net.cn/old/3.2.10.0.1.exe <br />
3.2.11.0.1 标准版本 <br />
http://www.autoit.net.cn/old/3.2.11.0.1standard.exe <br />
</font></p>]]></description>
			<link>http://blog.18883.com/blog/401</link>
			<category domain="http://blog.18883.com/blog/category/12">Autoit</category>
			<pubDate>2008-03-11 05:24</pubDate>
		</item>
		<item>
			<guid>http://blog.18883.com/blog/355</guid>
			<title>一个技术网管系统维护经验总结文档篇</title>
			<author>hopol</author>
			<description><![CDATA[<p>开机批处理整理 <br />
<br />
au3. <br />
<br />
_RunDos(&quot;\\sever\update\run.bat&quot;,&quot;@SW_HIDE&quot;) <br />
<br />
前提：系统装好au3的工具..www.autoit.net.cn <br />
<br />
au3,的确是维护系统的好工具.</p><br /><br /><a href="http://blog.18883.com/blog/?action=show&amp;id=355" target="_blank">阅读全文</a><br /><br />]]></description>
			<link>http://blog.18883.com/blog/355</link>
			<category domain="http://blog.18883.com/blog/category/12">Autoit</category>
			<pubDate>2007-11-23 18:25</pubDate>
		</item>
		<item>
			<guid>http://blog.18883.com/blog/352</guid>
			<title>AU3桌面图标控制</title>
			<author>hopol</author>
			<description><![CDATA[<p>用Autoit进行简单的桌面操作(转) <br />
2007-09-16 11:36 <br />
虽然autoit本身并不提供操作桌面的相关函数，不过利用已有的窗口函数我们仍可以对桌面进行简单的控制。 <br />
<br />
一、桌面句柄的取得 <br />
<br />
Windows的桌面实际上就是一个窗口，其标题就是&ldquo;Program Manager&rdquo;，而桌面上的图标则是一个标准的SysListView32控件。因此，我们可以这样获取桌面窗口和控件的句柄： <br />
<br />
CODE: AutoIt <br />
$handle = WinGetHandle(&quot;Program Manager&quot;) ;窗口句柄 <br />
$ctrl = ControlGetHandle(&quot;Program Manager&quot;,&quot;&quot;,&quot;SysListView321&quot;) ;控件句柄 <br />
当然了，使用窗口函数时我们并不一定要用窗口句柄和控件句柄，不过在调用系统API时我们只能使用窗口句柄，而且这样会让代码更整洁一些。 <br />
<br />
二、对桌面窗口的控制 <br />
<br />
既然已经得到了桌面窗口的句柄，我们就不妨利用窗口函数对桌面简单操作一下： <br />
<br />
CODE: AutoIt <br />
WinClose ($handle) ;显示关机对话框 <br />
Sleep(5000) <br />
WinSetTrans ($handle,&quot;&quot;,100) ;桌面图标透明(实际上没这么简单) <br />
$pos = WinGetPos ($handle) <br />
MsgBox(0,&quot;DesktopWidth&quot;,$pos[2]) <br />
MsgBox(0,&quot;DesktopHeight&quot;,$pos[3]) <br />
WinKill ($handle) ;重启桌面 <br />
另外需要说明的是，只要用WinMove函数移动桌面，桌面图标就会消失。 <br />
<br />
三、对桌面图标的控制 <br />
<br />
因为桌面图标是一个ListView32控件，所以用ControlListView函数就可以对桌面图标进行基本的操作： <br />
<br />
CODE: AutoIt <br />
ControlListView($handle,&quot;&quot;,$ctrl,&quot;SelectAll&quot;) ;选中桌面全部图标 <br />
ControlListView($handle,&quot;&quot;,$ctrl,&quot;SelectClear&quot;) ;取消选择 <br />
ControlListView($handle,&quot;&quot;,$ctrl,&quot;Select&quot;,4,7) ;选中第5到8个图标 <br />
MsgBox(0,&quot;第一个图标名称&quot;,ControlListView($handle,&quot;&quot;,$ctrl,&quot;GetText&quot;,0,0)) <br />
MsgBox(0,&quot;图标总数&quot;,ControlListView($handle,&quot;&quot;,$ctrl,&quot;GetItemCount&quot;)) <br />
MsgBox(0,&quot;选中图标数&quot;,ControlListView($handle,&quot;&quot;,$ctrl,&quot;GetSelectedCount&quot;)) <br />
ControlListView($handle,&quot;&quot;,$ctrl,&quot;ViewChange&quot;,&quot;list&quot;) ;列表形式显示桌面图标(失败) <br />
ControlListView($handle,&quot;&quot;,$ctrl,&quot;ViewChange&quot;,&quot;details&quot;) ;以&quot;详细信息&quot;的形式列出 <br />
ControlListView($handle,&quot;&quot;,$ctrl,&quot;ViewChange&quot;,&quot;smallicons&quot;) ;复原 <br />
ControlListView($handle,&quot;&quot;,$ctrl,&quot;ViewChange&quot;,&quot;largeicons&quot;) ;同上 <br />
ControlDisable ($handle,&quot;&quot;,$ctrl) ;无法点击桌面图标 <br />
ControlEnable ($handle,&quot;&quot;,$ctrl) ;恢复 <br />
ControlHide ($handle,&quot;&quot;,$ctrl) ;隐藏桌面图标 <br />
ControlShow ($handle,&quot;&quot;,$ctrl) ;恢复 <br />
;下面是列出全部选中的图标 <br />
$num = ControlListView($handle,&quot;&quot;,$ctrl,&quot;GetSelected&quot;,1) <br />
$array= StringSplit($num,&quot;|&quot;) <br />
For $i = 1 To $array[0] <br />
MsgBox(0,&quot;选中的第&quot;&amp;$i&amp;&quot;个图标&quot;,ControlListView($handle,&quot;&quot;,$ctrl,&quot;GetText&quot;,$array[$i],0)) <br />
Next <br />
四、移动桌面图标 <br />
<br />
移动图标主要靠发送LVM_SETITEMPOSITION消息来实现，下面是一个例子，其中$i_index、$i_x、$i_y分别代表要移动的图标（这里是第2个）、移动到的x坐标、y坐标： <br />
<br />
CODE: AutoIt <br />
#include &lt;Misc.au3&gt; <br />
<br />
Global Const $LVM_FIRST = 0x1000 <br />
Global Const $LVM_SETITEMPOSITION = ($LVM_FIRST + 15) <br />
<br />
$i_index = 1 <br />
$i_x = 500 <br />
$i_y = 600 <br />
<br />
_SendMessage(ControlGetHandle(&quot;Program Manager&quot;,&quot;&quot;,1), $LVM_SETITEMPOSITION, $i_index, BitOR(BitShift($i_y, -16), BitAND($i_x, 0xFFFF))) <br />
五、设置桌面的对齐网格 <br />
<br />
<br />
由于对齐网格是listview控件的一种style，所以通过使用LVM_SETEXTENDEDLISTVIEWSTYLE消息我们就能对此进行设置： <br />
<br />
CODE: AutoIt <br />
#Include &lt;misc.au3&gt; <br />
#include &lt;GuiListView.au3&gt; <br />
<br />
$LVS_EX_SNAPTOGRID = 0x80000 <br />
<br />
;对齐到网格 <br />
_SendMessage(ControlGetHandle(&quot;Program Manager&quot;,&quot;&quot;,1), $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_SNAPTOGRID, $LVS_EX_SNAPTOGRID) <br />
<br />
;不对齐 <br />
_SendMessage(ControlGetHandle(&quot;Program Manager&quot;,&quot;&quot;,1), $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_SNAPTOGRID, 0) <br />
六、让窗口处于最下层 <br />
<br />
通过将某一窗口设为桌面的子窗口，我们就能实现窗口置底： <br />
<br />
CODE: AutoIt <br />
$gui = GuiCreate(&quot;MyGUI&quot;, 227, 119) <br />
DllCall(&quot;user32.dll&quot;, &quot;int&quot;, &quot;SetParent&quot;, &quot;hwnd&quot;, $gui, &quot;hwnd&quot;,WinGetHandle(&quot;Program Manager&quot;)) <br />
<br />
GuiSetState() <br />
<br />
Do <br />
;;; <br />
Until GuiGetMsg() =-3 <br />
<br />
Exit <br />
七、设置任务栏的状态 <br />
<br />
利用SHAppBarMessage函数我们能对任务栏的状态进行控制： <br />
<br />
CODE: AutoIt <br />
Global Const $ABM_SETSTATE = 0x0000000a <br />
Global Const $ABS_ALWAYSONTOP = 0x2 <br />
Global Const $ABS_AUTOHIDE = 0x1 <br />
<br />
Global $pabd = DllStructCreate(&quot;dword;int;uint;uint;int;int;int;int;int&quot;) <br />
DllStructSetData($pabd,1,DllStructGetSize($pabd)) ;cbSize <br />
DllStructSetData($pabd,2,ControlGetHandle(&quot;Start&quot;,&quot;&quot;,&quot;Shell_TrayWnd&quot;)) ;hWnd <br />
<br />
Func SHAppBarMessage($Message,ByRef $pabd) <br />
$lResult = DllCall(&quot;shell32.dll&quot;,&quot;int&quot;,&quot;SHAppBarMessage&quot;,&quot;int&quot;,$Message,&quot;ptr&quot;,DllStructGetPtr($pabd)) <br />
If Not @error Then <br />
If $lResult[0] Then <br />
Return $lResult[0] <br />
EndIf <br />
EndIf <br />
SetError(1) <br />
Return False <br />
EndFunc <br />
<br />
;要设置不同的状态,请取消相应语句的注释 <br />
;DllStructSetData($pabd,9,$ABS_AUTOHIDE) ;自动隐藏,且不位于窗口前 <br />
;DllStructSetData($pabd,9,$ABS_ALWAYSONTOP) ;不自动隐藏,且位于窗口前 <br />
DllStructSetData($pabd,9,BitOR($ABS_ALWAYSONTOP,$ABS_AUTOHIDE)) ;自动隐藏,且位于窗口前 <br />
<br />
SHAppBarMessage($ABM_SETSTATE,$pabd) ;发送ABM_SETSTATE消息应用修改 <br />
更多关于SHAppBarMessage函数的信息请看这里。<br />
<a href="http://hi.baidu.com/zhch_ao/blog/item/a7d04c46cb9e4d0b6b63e5c4.html">http://hi.baidu.com/zhch_ao/blog/item/a7d04c46cb9e4d0b6b63e5c4.html</a> <br />
<br />
八、隐藏任务栏、开始按钮、任务栏图标等 <br />
<br />
说到这里我们已经转向了对任务栏的控制，同桌面一样，任务栏也是一个窗口，开始按钮、时钟等都是其下的控件，我们可以像控制窗口一样控制任务栏： <br />
<br />
<br />
<br />
CODE: AutoIt <br />
Opt(&quot;WinTitleMatchMode&quot;, 4) <br />
<br />
$sTrayWindow = WinGetHandle(&quot;[CLASS:Shell_TrayWnd]&quot;) ;窗口句柄 <br />
<br />
$sTrayClock = ControlGetHandle($sTrayWindow,&quot;&quot;,&quot;TrayClockWClass1&quot;) ;时钟句柄 <br />
$sTrayNotify = ControlGetHandle($sTrayWindow,&quot;&quot;,&quot;TrayNotifyWnd1&quot;) ;任务栏图标句柄 <br />
$sStartButton = ControlGetHandle($sTrayWindow,&quot;&quot;,&quot;Button1&quot;) ;开始按钮句柄 <br />
<br />
<br />
;隐藏任务栏 <br />
WinSetState($sTrayWindow,&quot;&quot;,@SW_HIDE) <br />
<br />
;隐藏任务栏时钟 <br />
WinSetState($sTrayClock,&quot;&quot;,@SW_SHOW) <br />
<br />
;隐藏任务栏图标(会马上还原) <br />
WinSetState($sTrayNotify,&quot;&quot;,@SW_HIDE) <br />
<br />
;隐藏开始按钮 <br />
WinSetState($sStartButton,&quot;&quot;,@SW_HIDE) <br />
<br />
<br />
九、桌面图标的相关控制 <br />
<br />
细心的朋友会发现，我控制桌面图标时都是用的名为SendMessage的API函数，而autoit里全部以_GUICtrlListView打头的函数都是这样定义的，也就是说，利用autoit已有的这些函数我们就能对桌面图标进行控制，比如说： <br />
<br />
CODE: AutoIt <br />
#include &lt;GuiListView.au3&gt; <br />
_GUICtrlListViewDeleteAllItems (ControlGetHandle(&quot;Program Manager&quot;,&quot;&quot;,&quot;SysListView321&quot;)) <br />
<br />
<br />
另外，Auto3Lib里也有大量与listview有关的函数，你可以在这里下载。 <br />
<a href="http://www.autoitscript.com/forum/index.php?showtopic=33677">http://www.autoitscript.com/forum/index.php?showtopic=33677</a></p>]]></description>
			<link>http://blog.18883.com/blog/352</link>
			<category domain="http://blog.18883.com/blog/category/12">Autoit</category>
			<pubDate>2007-11-22 16:22</pubDate>
		</item>
		<item>
			<guid>http://blog.18883.com/blog/313</guid>
			<title>用Autoit进行简单的桌面操作(补完)</title>
			<author>hopol</author>
			<description><![CDATA[<p>在上一文里我提过，利用API我们可以完成诸如移动桌面图标之类的操作。本文将着重讨论这方面的技术。</p><br /><br /><a href="http://blog.18883.com/blog/?action=show&amp;id=313" target="_blank">阅读全文</a><br /><br />]]></description>
			<link>http://blog.18883.com/blog/313</link>
			<category domain="http://blog.18883.com/blog/category/12">Autoit</category>
			<pubDate>2007-10-23 04:49</pubDate>
		</item>
		<item>
			<guid>http://blog.18883.com/blog/312</guid>
			<title>在Autoit中使用WMI：总索引</title>
			<author>hopol</author>
			<description><![CDATA[<p>在Autoit中使用WMI：总索引</p><br /><br /><a href="http://blog.18883.com/blog/?action=show&amp;id=312" target="_blank">阅读全文</a><br /><br />]]></description>
			<link>http://blog.18883.com/blog/312</link>
			<category domain="http://blog.18883.com/blog/category/12">Autoit</category>
			<pubDate>2007-10-23 04:46</pubDate>
		</item>
		<item>
			<guid>http://blog.18883.com/blog/311</guid>
			<title>在Autoit中使用WMI</title>
			<author>hopol</author>
			<description><![CDATA[<p>一、什么是WMI <br />
<br />
WMI是Windows 2K/XP管理系统的核心；对于其他的Win32操作系统，WMI是一个有用的插件。有了WMI，工具软件和脚本程序访问操作系统的不同部分时不需要使用不同的API；相反，操作系统的不同部分都可以插入WMI。 <br />
<br />
也就是说，利用WMI我们能更方便地管理 Windows 资源 &mdash; 例如磁盘、事件日志、文件、文件夹、文件系统、网络组件、操作系统设置、性能数据、打印机、进程、注册表设置、安全性、服务、共享、用户、组等等。。</p><br /><br /><a href="http://blog.18883.com/blog/?action=show&amp;id=311" target="_blank">阅读全文</a><br /><br />]]></description>
			<link>http://blog.18883.com/blog/311</link>
			<category domain="http://blog.18883.com/blog/category/12">Autoit</category>
			<pubDate>2007-10-23 04:44</pubDate>
		</item>
		<item>
			<guid>http://blog.18883.com/blog/310</guid>
			<title>OnEvent模式进阶教程</title>
			<author>hopol</author>
			<description><![CDATA[<p>很多autoit的用户（包括一些老用户）都认为OnEvent模式是简单的把GUIGetMsg 替换成了GUICtrlSetOnEvent，因此也产生了OnEvent模式不适合复杂GUI的误解。本文将具体阐述OnEvent模式的高级应用和使用技巧。 <br />
<br />
一、OnEvent模式的优势 <br />
<br />
OnEvent模式和MessageLoop模式最大的区别在于一个是主动，一个是被动。前者只有产生了消息才会执行函数，而后者则是不断地获取直到得到消息，这样CPU占用上OnEvent模式有很大优势。 <br />
<br />
另外，OnEvent模式能在运行脚本的同时获取GUI事件消息，这样我们就能把非常耗时的代码放在主循环里运行，而在其他的自定义函数里处理GUI消息。 <br />
<br />
比如下面这段代码，程序一直在主循环里更新控件内容，与此同时程序还能响应GUI消息：&nbsp;<br />
<br />
#include &lt;GuiConstants.au3&gt; <br />
<br />
GUICreate(&quot;MyGUI&quot;, 372, 88, -1, -1, BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS)) <br />
<br />
$Progress_1 = GUICtrlCreateProgress(10, 10, 370, 20) <br />
$Button_2 = GUICtrlCreateButton(&quot;start&quot;, 10, 40, 60, 30) <br />
$Button_3 = GUICtrlCreateButton(&quot;pause&quot;, 80, 40, 60, 30) <br />
$Button_4 = GUICtrlCreateButton(&quot;exit&quot;, 150, 40, 70, 30) <br />
<br />
Opt(&quot;GUIOnEventMode&quot;, 1) <br />
<br />
Dim $start = 0, $ostart <br />
<br />
GUISetState() <br />
GUISetOnEvent($GUI_EVENT_CLOSE, &quot;gui&quot;) <br />
GUICtrlSetOnEvent($Button_2, &quot;gui&quot;) <br />
GUICtrlSetOnEvent($Button_3, &quot;gui&quot;) <br />
GUICtrlSetOnEvent($Button_4, &quot;gui&quot;) <br />
<br />
While 1 <br />
If $start &gt;= 0 Then <br />
Sleep(50) <br />
$start += 1 <br />
If $start &gt; 100 Then $start = 0 <br />
If $start &gt;= 0 Then <br />
$ostart = $start <br />
GUICtrlSetData($Progress_1, $start) <br />
Else <br />
ContinueLoop <br />
EndIf <br />
EndIf <br />
WEnd <br />
<br />
Exit <br />
<br />
Func gui() <br />
Switch @GUI_CtrlId <br />
Case $GUI_EVENT_CLOSE, $Button_4 <br />
Exit <br />
Case $Button_2 <br />
$start = 0 <br />
Case $Button_3 <br />
If $start = -100 Then <br />
$start = $ostart <br />
Else <br />
$start = -100 <br />
EndIf <br />
EndSwitch <br />
EndFunc ;==&gt;gui <br />
如果用MessageLoop模式来实现相同的效果，不但代码复杂，对GUI消息的响应也相当迟钝。也就是说MessageLoop模式只能在一个时间里做一件事，而OnEvent模式则能在做同样的事的同时抽出手去处理GUI事件。 <br />
<br />
所以，对于一些操作非常耗时或者GUI非常复杂的脚本，我们应首选OnEvent模式。 <br />
<br />
二、宏的妙用 <br />
<br />
许多人都有一个误解，认为一个事件只能注册一个函数，因此一些人把脚本写完之后代码里到处都是Func 、EndFunc。实际上，autoit本就提供了@GUI_CTRLID、@GUI_WINHANDLE、@GUI_CTRLHANDLE这三个宏，合理利用宏能大大简化代码 <br />
<br />
事实上，帮助文件里就有过说明： <br />
<br />
注意：使用同一个函数来响应多种事件是完全合法的，记住要灵活使用 @GUI_CTRLID 这个宏。比如说，您可以注册所有系统事件到同一个函数。 <br />
<br />
<br />
下面是一个例子：&nbsp;<br />
<br />
#include &lt;GuiConstants.au3&gt; <br />
<br />
GuiCreate(&quot;MyGUI&quot;, 340, 60,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS)) <br />
<br />
$Button_1 = GuiCtrlCreateButton(&quot;Button1&quot;, 10, 10, 100, 40) <br />
$Button_2 = GuiCtrlCreateButton(&quot;Button2&quot;, 120, 10, 100, 40) <br />
$Button_3 = GuiCtrlCreateButton(&quot;Button3&quot;, 230, 10, 100, 40) <br />
<br />
Opt(&quot;GUIOnEventMode&quot;, 1) <br />
<br />
<br />
GUISetState() <br />
<br />
GUISetOnEvent($GUI_EVENT_CLOSE, &quot;gui&quot;) <br />
GUICtrlSetOnEvent($Button_2, &quot;gui&quot;) <br />
GUICtrlSetOnEvent($Button_3, &quot;gui&quot;) <br />
GUICtrlSetOnEvent($Button_1, &quot;gui&quot;) <br />
<br />
While 1 <br />
;;; <br />
WEnd <br />
<br />
Exit <br />
<br />
Func gui() <br />
Switch @GUI_CtrlId <br />
Case $GUI_EVENT_CLOSE <br />
Exit <br />
Case $Button_2 <br />
MsgBox(0,&quot;&quot;,&quot;按下了Button_2&quot;) <br />
Case $Button_3 <br />
MsgBox(0,&quot;&quot;,&quot;按下了Button_3&quot;) <br />
Case $Button_1 <br />
MsgBox(0,&quot;&quot;,&quot;按下了Button_1&quot;) <br />
EndSwitch <br />
EndFunc ;==&gt;gui <br />
在上面的例子里，我将全部的事件都注册到一个函数里，然后根据@GUI_CTRLID来判断具体的事件，这样代码就简洁多了。 <br />
<br />
而在关闭多窗口时@GUI_WINHANDLE则会起到很大作用，下面有个例子：&nbsp;<br />
<br />
#include &lt;GuiConstants.au3&gt; <br />
Opt(&quot;GUIOnEventMode&quot;, 1) <br />
<br />
$main = GuiCreate(&quot;MyGUI&quot;, 340, 60,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS)) <br />
GUISetOnEvent($GUI_EVENT_CLOSE, &quot;gui&quot;) <br />
<br />
$Button_1 = GuiCtrlCreateButton(&quot;Button1&quot;, 10, 10, 100, 40) <br />
$Button_2 = GuiCtrlCreateButton(&quot;Button2&quot;, 120, 10, 100, 40) <br />
$Button_3 = GuiCtrlCreateButton(&quot;Button3&quot;, 230, 10, 100, 40) <br />
<br />
GUISetState() <br />
<br />
GuiCreate(&quot;子窗口1&quot;, 140, 60,10,100,-1,-1,$main) <br />
GUISetOnEvent($GUI_EVENT_CLOSE, &quot;gui&quot;) <br />
GUISetState() <br />
GuiCreate(&quot;子窗口2&quot;, 140, 60,160,100,-1,-1,$main) <br />
GUISetOnEvent($GUI_EVENT_CLOSE, &quot;gui&quot;) <br />
GUISetState() <br />
GuiCreate(&quot;子窗口3&quot;, 140, 60,300,100,-1,-1,$main) <br />
GUISetOnEvent($GUI_EVENT_CLOSE, &quot;gui&quot;) <br />
GUISetState() <br />
<br />
GUISetOnEvent($GUI_EVENT_CLOSE, &quot;gui&quot;) <br />
GUICtrlSetOnEvent($Button_2, &quot;gui&quot;) <br />
GUICtrlSetOnEvent($Button_3, &quot;gui&quot;) <br />
GUICtrlSetOnEvent($Button_1, &quot;gui&quot;) <br />
<br />
While 1 <br />
;;; <br />
WEnd <br />
<br />
Exit <br />
<br />
Func gui() <br />
Switch @GUI_CtrlId <br />
Case $GUI_EVENT_CLOSE <br />
Switch @GUI_WINHANDLE <br />
Case $main <br />
Exit <br />
Case Else <br />
MsgBox(0,&quot;&quot;,&quot;关闭窗口:&quot;&amp;WinGetTitle(@GUI_WINHANDLE)) <br />
GUIDelete(@GUI_WINHANDLE) <br />
EndSwitch <br />
Case $Button_2 <br />
MsgBox(0,&quot;&quot;,&quot;按下了Button_2&quot;) <br />
Case $Button_3 <br />
MsgBox(0,&quot;&quot;,&quot;按下了Button_3&quot;) <br />
Case $Button_1 <br />
MsgBox(0,&quot;&quot;,&quot;按下了Button_1&quot;) <br />
EndSwitch <br />
EndFunc ;==&gt;gui <br />
我们可以看到，主窗口关闭时程序会直接退出，而其余窗口关闭时则会删掉关闭的窗口。这里有个技巧，就是对于非主窗口，我们可以在Case Else的情况下用GUIDelete(@GUI_WinHandle)直接处理窗口，而不需要为每个窗口都写一个关闭函数。&nbsp;<br />
<br />
三、多窗口操作技巧 <br />
<br />
建立多窗口时两种选择，一是在脚本开头就建立好全部窗口，然后把多余的窗口隐藏起来，在需要时再将隐藏的窗口显示出来。二是只建立主窗口，在需要时才建立子窗口。前一种选择会多占用内存，但响应速度非常快，适合使用多个非常复杂的窗口的脚本；而后一种选择明显要节约内存，但临时建立窗口会花费一些时间，适合一些子窗口简单的脚本。 <br />
<br />
至于帮助文件里提到的GUISwitch函数，实际上很少会用到。 <br />
<br />
下面分别是两种选择的范例： <br />
隐藏子窗口型：&nbsp;<br />
<br />
#include &lt;GuiConstants.au3&gt; <br />
Opt(&quot;GUIOnEventMode&quot;, 1) <br />
<br />
$main = GuiCreate(&quot;MyGUI&quot;, 340, 60,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS)) <br />
GUISetOnEvent($GUI_EVENT_CLOSE, &quot;gui&quot;) <br />
<br />
$Button_1 = GuiCtrlCreateButton(&quot;显示窗口1&quot;, 10, 10, 100, 40) <br />
$Button_2 = GuiCtrlCreateButton(&quot;显示窗口2&quot;, 120, 10, 100, 40) <br />
$Button_3 = GuiCtrlCreateButton(&quot;显示窗口3&quot;, 230, 10, 100, 40) <br />
<br />
GUISetState() <br />
<br />
$s1 = GuiCreate(&quot;子窗口1&quot;, 140, 60,10,100,-1,-1,$main) <br />
GUISetOnEvent($GUI_EVENT_CLOSE, &quot;gui&quot;) <br />
GUISetState(@SW_HIDE) <br />
$s2 = GuiCreate(&quot;子窗口2&quot;, 140, 60,160,100,-1,-1,$main) <br />
GUISetOnEvent($GUI_EVENT_CLOSE, &quot;gui&quot;) <br />
GUISetState(@SW_HIDE) <br />
$s3 = GuiCreate(&quot;子窗口3&quot;, 140, 60,300,100,-1,-1,$main) <br />
GUISetOnEvent($GUI_EVENT_CLOSE, &quot;gui&quot;) <br />
GUISetState(@SW_HIDE) <br />
<br />
GUISetOnEvent($GUI_EVENT_CLOSE, &quot;gui&quot;) <br />
GUICtrlSetOnEvent($Button_2, &quot;gui&quot;) <br />
GUICtrlSetOnEvent($Button_3, &quot;gui&quot;) <br />
GUICtrlSetOnEvent($Button_1, &quot;gui&quot;) <br />
<br />
While 1 <br />
;;; <br />
WEnd <br />
<br />
Exit <br />
<br />
Func gui() <br />
Switch @GUI_CtrlId <br />
Case $GUI_EVENT_CLOSE <br />
Switch @GUI_WINHANDLE <br />
Case $main <br />
Exit <br />
Case Else <br />
GUISetState(@SW_HIDE,@GUI_WINHANDLE) <br />
EndSwitch <br />
Case $Button_2 <br />
GUISetState(@SW_SHOW,$s2) <br />
Case $Button_3 <br />
GUISetState(@SW_SHOW,$s3) <br />
Case $Button_1 <br />
GUISetState(@SW_SHOW,$s1) <br />
EndSwitch <br />
EndFunc ;==&gt;gui <br />
删除子窗口型：&nbsp;<br />
<br />
#include &lt;GuiConstants.au3&gt; <br />
Opt(&quot;GUIOnEventMode&quot;, 1) <br />
<br />
$main = GuiCreate(&quot;MyGUI&quot;, 340, 60,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS)) <br />
GUISetOnEvent($GUI_EVENT_CLOSE, &quot;gui&quot;) <br />
<br />
$Button_1 = GuiCtrlCreateButton(&quot;显示窗口1&quot;, 10, 10, 100, 40) <br />
$Button_2 = GuiCtrlCreateButton(&quot;显示窗口2&quot;, 120, 10, 100, 40) <br />
$Button_3 = GuiCtrlCreateButton(&quot;显示窗口3&quot;, 230, 10, 100, 40) <br />
<br />
GUISetState() <br />
GUISetOnEvent($GUI_EVENT_CLOSE, &quot;gui&quot;) <br />
<br />
GUICtrlSetOnEvent($Button_2, &quot;gui&quot;) <br />
GUICtrlSetOnEvent($Button_3, &quot;gui&quot;) <br />
GUICtrlSetOnEvent($Button_1, &quot;gui&quot;) <br />
<br />
While 1 <br />
;;; <br />
WEnd <br />
<br />
Exit <br />
<br />
Func gui() <br />
Switch @GUI_CtrlId <br />
Case $GUI_EVENT_CLOSE <br />
Switch @GUI_WINHANDLE <br />
Case $main <br />
Exit <br />
Case Else <br />
GUIDelete(@GUI_WINHANDLE) <br />
EndSwitch <br />
Case $Button_2 <br />
if WinExists(&quot;子窗口2&quot;) = 0 Then <br />
GuiCreate(&quot;子窗口2&quot;, 140, 60,10,100,-1,-1,$main) <br />
GUISetState() <br />
GUISetOnEvent($GUI_EVENT_CLOSE, &quot;gui&quot;) <br />
EndIf <br />
Case $Button_3 <br />
if WinExists(&quot;子窗口3&quot;) = 0 Then <br />
GuiCreate(&quot;子窗口3&quot;, 140, 60,160,100,-1,-1,$main) <br />
GUISetState() <br />
GUISetOnEvent($GUI_EVENT_CLOSE, &quot;gui&quot;) <br />
EndIf <br />
Case $Button_1 <br />
if WinExists(&quot;子窗口1&quot;) = 0 Then <br />
GuiCreate(&quot;子窗口1&quot;, 140, 60,300,100,-1,-1,$main) <br />
GUISetState() <br />
GUISetOnEvent($GUI_EVENT_CLOSE, &quot;gui&quot;) <br />
EndIf <br />
EndSwitch <br />
EndFunc ;==&gt;gui <br />
四、一些技巧 <br />
<br />
除去上面几节提到的一些，OnEvent模式下还有几项实用的技巧： <br />
<br />
1.可控下载 <br />
<br />
在下载时，我们可以把下载函数放到主循环里进行，再根据某个变量的变化来停止、开始下载。而我们可以根据不同的GUI事件来控制这个变量。下面是一个例子：&nbsp;<br />
<br />
#include &lt;GuiConstants.au3&gt; <br />
Opt(&quot;GUIOnEventMode&quot;, 1) <br />
Dim $start,$stop <br />
<br />
GuiCreate(&quot;MyGUI&quot;, 392, 84,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS)) <br />
<br />
$Input_1 = GuiCtrlCreateInput(&quot;http://www.geocities.com/z8519312/ComicsDown-203.zip&quot;, 10, 10, 280, 30) <br />
$Button_2 = GuiCtrlCreateButton(&quot;下载&quot;, 300, 10, 80, 30) <br />
$Progress_3 = GuiCtrlCreateProgress(10, 50, 370, 20) <br />
<br />
GUISetOnEvent($GUI_EVENT_CLOSE, &quot;gui&quot;) <br />
GUICtrlSetOnEvent($Button_2,&quot;gui&quot;) <br />
<br />
GuiSetState() <br />
<br />
While 1 <br />
If $start=1 Then <br />
GUICtrlSetData($Button_2,&quot;停止&quot;) <br />
$url = GUICtrlRead($Input_1) <br />
$size = InetGetSize($url) <br />
InetGet ($url, @TempDir&amp;&quot;\d.tem&quot;,0,1) <br />
Do <br />
Sleep(500) <br />
GUICtrlSetData($Progress_3,@InetGetBytesRead /$size*100) <br />
If $stop = 1 Then <br />
InetGet (&quot;abort&quot;) <br />
ExitLoop <br />
EndIf <br />
Until @InetGetActive = 0 <br />
GUICtrlSetData($Button_2,&quot;下载&quot;) <br />
$stop = 0 <br />
$start = 0 <br />
EndIf <br />
WEnd <br />
<br />
Exit <br />
<br />
Func gui() <br />
Switch @GUI_CtrlId <br />
Case $GUI_EVENT_CLOSE <br />
Exit <br />
Case $Button_2 <br />
If GUICtrlRead($Button_2) = &quot;下载&quot; Then <br />
$start =1 <br />
Else <br />
$stop = 1 <br />
EndIf <br />
EndSwitch <br />
EndFunc <br />
2.用数组储存控件ID <br />
<br />
有时候我们需要注册的大量控件，如果是每一个控件都用GUICtrlSetOnEvent来注册，代码量会非常大，这时用数组就会省事得多。下面是个例子：&nbsp;<br />
<br />
Dim $Button[3] <br />
<br />
$Button[0] = GuiCtrlCreateButton(&quot;Button1&quot;, 10, 10, 100, 40) <br />
$Button[1] = GuiCtrlCreateButton(&quot;Button2&quot;, 120, 10, 100, 40) <br />
$Button[2] = GuiCtrlCreateButton(&quot;Button3&quot;, 230, 10, 100, 40) <br />
<br />
For $i =0 To 2 <br />
GUICtrlSetOnEvent($Button[$i], &quot;gui&quot;) <br />
Next <br />
这里有个问题，绝大多数人都使用KODA来建立窗口（其实我自己用的是GUIBuilder），而KODA不能以数组来命名控件ID，只能用button_1、button_2之类的名称来命名控件ID，这时我们就可以用Eval函数来解决：&nbsp;<br />
<br />
$Button_1 = GuiCtrlCreateButton(&quot;Button1&quot;, 10, 10, 100, 40) <br />
$Button_2 = GuiCtrlCreateButton(&quot;Button2&quot;, 120, 10, 100, 40) <br />
$Button_3 = GuiCtrlCreateButton(&quot;Button3&quot;, 230, 10, 100, 40) <br />
<br />
For $i =0 To 2 <br />
GUICtrlSetOnEvent(Eval(&quot;Button_&quot;&amp;String($i)), &quot;gui&quot;) <br />
Next <br />
&mdash;&mdash;END&mdash;&mdash;</p>]]></description>
			<link>http://blog.18883.com/blog/310</link>
			<category domain="http://blog.18883.com/blog/category/12">Autoit</category>
			<pubDate>2007-10-23 04:41</pubDate>
		</item>
		<item>
			<guid>http://blog.18883.com/blog/309</guid>
			<title>Autoit系统消息详解——GUI通知补充</title>
			<author>hopol</author>
			<description><![CDATA[<p>在上文我已经详细叙述了Autoit处理系统消息的原理，这里我再系统介绍一下各类GUI通知。</p><br /><br /><a href="http://blog.18883.com/blog/?action=show&amp;id=309" target="_blank">阅读全文</a><br /><br />]]></description>
			<link>http://blog.18883.com/blog/309</link>
			<category domain="http://blog.18883.com/blog/category/12">Autoit</category>
			<pubDate>2007-10-23 04:37</pubDate>
		</item>
		<item>
			<guid>http://blog.18883.com/blog/308</guid>
			<title>Autoit系统消息详解——GUI通知</title>
			<author>hopol</author>
			<description><![CDATA[<p>很多人都对系统消息比较陌生，实际上，Autoit里用GUIGetMsg和GUICtrlSetOnEvent函数捕捉的GUI事件都属于系统消息的范畴。而在v3.1.0以后的版本里，我们就可以用GUIRegisterMsg函数来自行捕捉系统消息，藉此来实现对右击、双击、获取焦点等行为的判断。本文将探讨如何在Autoit里捕捉并处理GUI通知。</p><br /><br /><a href="http://blog.18883.com/blog/?action=show&amp;id=308" target="_blank">阅读全文</a><br /><br />]]></description>
			<link>http://blog.18883.com/blog/308</link>
			<category domain="http://blog.18883.com/blog/category/12">Autoit</category>
			<pubDate>2007-10-23 04:35</pubDate>
		</item>
		<item>
			<guid>http://blog.18883.com/blog/307</guid>
			<title>Autoit里用多进程模拟多线程</title>
			<author>hopol</author>
			<description><![CDATA[<p>一直以来Autoit都不支持多线程，因此一些需要同时运行多个循环的操作也就无法实现。这个问题在其它的某些语言里也经常出现，解决的方法就是使用多进程。 <br />
<br />
所谓多进程，就是同时运行多个子进程，每个子进程负责不同的操作，藉此达到和多线程相当的效果。Autoit本身已经具备了实现多进程的条件，且已经有人完成了相关的自定义函数。下面我将具体讲解如何利用这些自定义函数实现多进程。</p><br /><br /><a href="http://blog.18883.com/blog/?action=show&amp;id=307" target="_blank">阅读全文</a><br /><br />]]></description>
			<link>http://blog.18883.com/blog/307</link>
			<category domain="http://blog.18883.com/blog/category/12">Autoit</category>
			<pubDate>2007-10-23 04:32</pubDate>
		</item>
		<item>
			<guid>http://blog.18883.com/blog/306</guid>
			<title>用Autoit进行简单的桌面操作</title>
			<author>hopol</author>
			<description><![CDATA[<p>虽然autoit本身并不提供操作桌面的相关函数，不过利用已有的窗口函数我们仍可以对桌面进行简单的控制。</p><br /><br /><a href="http://blog.18883.com/blog/?action=show&amp;id=306" target="_blank">阅读全文</a><br /><br />]]></description>
			<link>http://blog.18883.com/blog/306</link>
			<category domain="http://blog.18883.com/blog/category/12">Autoit</category>
			<pubDate>2007-10-23 04:29</pubDate>
		</item>
	</channel>
</rss>
