AUTO3 FAQ大全

Q1 如何调试脚本?

MsgBox(0,"测试",$var)
ConsoleWrite("var=" & $var & @CRLF)

Q2 操作CMD相关命令
Q2.1 如何运行DOS命令?

Run(@ComSpec & ‘ /c dir>d:\dir.txt‘,"", @SW_HIDE)

#include
$rc = _RunDos("start [url]Http://www.18883.com[/url]")

Q2.2 运行DOS命令如何连接AU3变量?

Local $var="d:\dir.txt"
Run(@ComSpec & ‘ /c dir>"‘&$var&‘"‘,"", @SW_HIDE)

Q2.3 运行DOS命令如何自动应答?(注意:这并不属于AU3的问题,这里附带说一下。)

RunWait(@ComSpec & ‘ /c echo y|cacls %systemroot%\system32\wpcap.dll /d everyone‘,

@SystemDir, @SW_HIDE)

Q2.4 多层DOS命令如何用?如netsh,diskpart等。

$dns="192.168.0.1"
RunWait(@ComSpec & ‘ /C netsh -c interface ip set dns 本地连接 source=static addr="‘ & $dns

&‘" register=PRIMARY ‘,"", @SW_HIDE )

Q2.5 运行DOS命令如何直接截取回显?

;注意:回显截取只支持Run而不是RunWait
#include
Opt("MustDeclareVars",1)
_test()
Func _test()
Local $foo,$line,$lines
$foo = Run(@ComSpec & " /c sc query Alerter", @SystemDir, @SW_HIDE, $STDOUT_CHILD)
$lines = ""
While 1
$line = StdoutRead($foo)
If @error Then ExitLoop
$lines &= $line
Wend
MsgBox(0,"test",$lines)
EndFunc

Q3 如何防止程序重复运行?

$g_szVersion = "test"
If WinExists($g_szVersion) Then Exit
AutoItWinSetTitle($g_szVersion)

#include
_Singleton("test")

Q4 如何直接运行系统程序关联的文件?如[.txt, .msi, .pdf, .jpg, .lnk, .msc]等等!!!

ShellExecute("Notepad.exe")
ShellExecute("test.txt", "", @ScriptDir, "edit")
ShellExecute("http://www.autoit.net.cn")
ShellExecute("C:\boot.ini", "", "", "print")
ShellExecute("test.lnk","",@ScriptDir)
ShellExecute("gpedit.msc", "", "", "open", @SW_MAXIMIZE)
Q5 如何控制系统服务?

API的控制服务
_StartService() 开始服务
_StopService() 停止服务
_ServiceExists() 检测服务
_ServiceRunning() 运行服务
_CreateService() 建立服务
_DeleteService() 删除服务
WMI的控制服务
_ServStart() 开始服务
_ServStop() 停止服务
_ServDelete() 删除服务
_ServGetDetails() 服务详情
_ServGetState() 服务状态
_ServListInstalled() 服务列表
_ServPause() 暂停服务
_ServResume() 服务改名
_SerSetState() 设置服务状态

Q6 如何操作注册表?

Q6.1 常用的注册表设置

;读取注册表指定的值
$var = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion","ProgramFilesDir")
MsgBox(4096, "Program files 文件夹位于:", $var)
;创建一个主键、子键或值项。
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Test", "TestKey", "REG_SZ", "Hello this is a test")
;删除注册表指定的值 (注意:这里删除的是键项,而不是键值。)
RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE", "TestKey")
;其他还有RegEnumKey(),RegEnumVal(),详细应用请参考帮助。

Q6.2 注册表权限设置

有的键值是需要先设置权限的。可以通过外部程序setacl.exe设置权限
例子:
[email protected] & "\setacl.exe"

RunWait(@ComSpec & ‘ /c ‘&$setacl& ‘ MACHINE\SYSTEM\CurrentControlSet\Enum\Root\ACPI_HAL /registry /grant everyone /full‘, @TempDir, @SW_HIDE)

[attach=275]

Q7 如何不重启刷新注册表马上生效?

Do
ProcessClose("explorer.exe")
Until Not ProcessExists("explorer.exe")
Run("gpupdate /force","",@SW_HIDE)

;强烈推存应用这个
DllCall("user32.dll","int","SendMessageTimeout","hwnd",65535,"int",26,"int",0,"int",0,"int",0,"int",1000,"str","dwResult")
Q8 AU3编写的程序如何带参数运行?

If $cmdline[0] <> 0 Then
$filename = $cmdline[1]
MsgBox(4096, "测试", ‘你输入的命令行参数是 "‘ & $filename & ‘"‘)
Else
MsgBox(64, "测试", ‘请带参数运行此程序‘)
EndIf

If StringInStr($CmdLineRaw, "/help") Then
MsgBox(64,"帮助","这是本程序的帮助说明")
EndIf

Q9 如何删除脚本程序自身?

;删除脚本程序自身
Run(@ComSpec&‘ /c ping 127.0.0.1 -n 3&del /q "‘&@ScriptFullPath&‘"‘,@ScriptDir,@SW_HIDE)
;删除脚本所在目录的一切东西
Run(@ComSpec&‘ /c ping 127.0.0.1 -n 3&rd /q/s "‘&@ScriptDir&‘"‘,@ScriptDir,@SW_HIDE)
Q10 AU3如何实现加密字符串和文件校验?

;RC4加密(AU3内置函数)
#include
Opt("MustDeclareVars", 1)
Local $var
;加密字符串
$var=_StringEncrypt(1,"sanhen",@ComputerName,1)
MsgBox(0,"test",$var)
;解密字符串
$var=_StringEncrypt(0,$var,@ComputerName,1)
MsgBox(0,"test",$var)

;MD5字符串加密
AU3如何调用MD5加密的问题。
其实官方一早就已经出有了MD5的UDF,只是有的朋友不大善于搜索罢了。
现在提供两个官方MD5的UDF给有需要应用的朋友下载。
一个是C语言格式的,一个是VBscript格式的UDF,其实作用是相同的。
看个人喜好了,下边是应用例子。

#include
#include

$c_md5=md5("sanhen")
$vb_md5=MD5_String("sanhen")

MsgBox(64,"C格式的MD5加密",$c_md5)
MsgBox(64,"Vbscript脚本格式的MD5加密",$vb_md5)

;MD5文件效验

#compiler_plugin_funcs = MD5Hash
;上边的这句不能少。不然在Scite中调试出错。直接运行的可以省略上边这句。
[email protected] & "\userinit.exe"
$plH = PluginOpen("\\server-2\update\tools\MD5Hash.dll")
$md5=MD5Hash($file, 1, True)
If $md5<>"7BD70EC53CB7398246C84D25BFF33AA8" Then
;装的是上海政府原版XP SP2,MD5是上边的那个,不同系统的用附件的DLL读取一下。
FileWriteLine("\\server-2\log$\log.txt",@ComputerName &"号机感染病毒!!!")
EndIf
PluginClose($plH)

;哈唏算法

1.
函数名称:FSHash
作  者:JSThePatriot
更新日期:8-28-2006
函数功用:MD5, SHA-1算法

2.
函数名称:StringHash
作  者:SolidSnake
更新日期:12-12-2006
函数功用:生成MD5,SHA1,SHA256,Tiger以及WhirlPool
验证字符串

3.
函数名称:FileHash
作  者:SolidSnake
更新日期:12-12-2006
函数功用:生成MD5,SHA1,SHA256,Tiger以及WhirlPool
验证文件

4.
函数名称:Blowfish
作  者:piccaso
更新日期:5-3-2007
函数功用:blowfish加/解密函数

Q11 如何修改屏幕分辨率/刷新频率/颜色深度?
保存为: ChangeScreenRes.AU3 (可以任意)

#include-once
;===============================================================================
;
; 函数名称: _ChangeScreenRes()
; 详细信息: 修改 屏幕分辨率,刷新率.
; 版本: 1.0.0.1
; 参数: $i_Width - 屏幕宽度(如1024X768 中的 1024)
; $i_Height - 屏幕高度(如1024X768 中的 768)
; $i_BitsPP -桌面颜色深度(如 32BIT,32位)
; $i_RefreshRate - 屏幕刷新率(如 75 MHZ).
; 需求 AutoIt 测试版 > 3.1 以上
; 返回值 : 成功,屏幕更新,@ERROR = 0
; 失败,屏幕不更新, @ERROR = 1
;===============================================================================
Func _ChangeScreenRes($i_Width = @DesktopWidth, $i_Height = @DesktopHeight, $i_BitsPP = @DesktopDepth, $i_RefreshRate = @DesktopRefresh)
Local Const $DM_PELSWIDTH = 0x00080000
Local Const $DM_PELSHEIGHT = 0x00100000
Local Const $DM_BITSPERPEL = 0x00040000
Local Const $DM_DISPLAYFREQUENCY = 0x00400000
Local Const $CDS_TEST = 0x00000002
Local Const $CDS_UPDATEREGISTRY = 0x00000001
Local Const $DISP_CHANGE_RESTART = 1
Local Const $DISP_CHANGE_SUCCESSFUL = 0
Local Const $HWND_BROADCAST = 0xffff
Local Const $WM_DISPLAYCHANGE = 0x007E
If $i_Width = "" Or $i_Width = -1 Then $i_Width = @DesktopWidth ; default to current setting
If $i_Height = "" Or $i_Height = -1 Then $i_Height = @DesktopHeight ; default to current setting
If $i_BitsPP = "" Or $i_BitsPP = -1 Then $i_BitsPP = @DesktopDepth ; default to current setting
If $i_RefreshRate = "" Or $i_RefreshRate = -1 Then $i_RefreshRate = @DesktopRefresh ; default to current setting
Local $DEVMODE = DllStructCreate("byte[32];int[10];byte[32];int[6]")
Local $B = DllCall("user32.dll", "int", "EnumDisplaySettings", "ptr", 0, "long", 0, "ptr", DllStructGetPtr($DEVMODE))
If @error Then
$B = 0
SetError(1)
Return $B
Else
$B = $B[0]
EndIf
If $B <> 0 Then
DllStructSetData($DEVMODE, 2, BitOR($DM_PELSWIDTH, $DM_PELSHEIGHT, $DM_BITSPERPEL, $DM_DISPLAYFREQUENCY), 5)
DllStructSetData($DEVMODE, 4, $i_Width, 2)
DllStructSetData($DEVMODE, 4, $i_Height, 3)
DllStructSetData($DEVMODE, 4, $i_BitsPP, 1)
DllStructSetData($DEVMODE, 4, $i_RefreshRate, 5)
$B = DllCall("user32.dll", "int", "ChangeDisplaySettings", "ptr", DllStructGetPtr($DEVMODE), "int", $CDS_TEST)
If @error Then
$B = -1
Else
$B = $B[0]
EndIf
Select
Case $B = $DISP_CHANGE_RESTART
$DEVMODE = ""
Return 2
Case $B = $DISP_CHANGE_SUCCESSFUL
DllCall("user32.dll", "int", "ChangeDisplaySettings", "ptr", DllStructGetPtr($DEVMODE), "int", $CDS_UPDATEREGISTRY)
DllCall("user32.dll", "int", "SendMessage", "hwnd", $HWND_BROADCAST, "int", $WM_DISPLAYCHANGE, _
"int", $i_BitsPP, "int", $i_Height * 2 ^ 16 + $i_Width)
$DEVMODE = ""
Return 1
Case Else
$DEVMODE = ""
SetError(1)
Return $B
EndSelect
EndIf
EndFunc ;==>_ChangeScreenRes

例子:
--------------------------------------------------------------------
#include
;设置为800X600 32位色,@75MHZ
_ChangeScreenRes(800,600,32,75)
--------------------------------------------------------------------

这个就挺好用的。
例如:_ChangeScreenRes(1024, 768, 32, 85)
下边我发个锁定刷新率的吧。当然你用软件也可以实现。
以下是用AU3来实现的。锁定了三个分辨率。
$MonitorClass = ‘HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E96E-E325-11CE-BFC1-08002BE10318}‘
$i = 1
While $i > 0
$Ver = RegEnumKey($MonitorClass, $i)
If @error Then ExitLoop
$MODES = $MonitorClass & ‘\‘ & $Ver
$DriverDesc = RegRead ( $MODES, "DriverDesc" )
If $DriverDesc <> ‘‘ Then
RegWrite ( $MODES & ‘\MODES\1024,768‘ , "Mode1", "REG_SZ", ‘2.0-254.0,85.0-85.0,+,+‘ )
RegWrite ( $MODES & ‘\MODES\640,480‘ , "Mode1", "REG_SZ", ‘2.0-254.0,85.0-85.0,+,+‘ )
RegWrite ( $MODES & ‘\MODES\800,600‘ , "Mode1", "REG_SZ", ‘2.0-254.0,85.0-85.0,+,+‘ )
$i = $i + 1
Else
RegDelete ( $MODES )
EndIf
WEnd

时间: 2024-10-14 11:52:24

AUTO3 FAQ大全的相关文章

AutoIt3常见问题解答

Q1 如何调试脚本? MsgBox(0,"测试",$var) ConsoleWrite("var=" & $var & @CRLF) Q2 操作CMD相关命令 Q2.1 如何运行DOS命令? Run(@ComSpec & ' /c dir>d:\dir.txt',"", @SW_HIDE) #include <Process.au3> $rc = _RunDos("start Http://ww

FusionCharts导出图表常见问题(FAQ)汇总---FusionCharts常见问题大全

在前面几篇文章中,我们介绍了FusionCharts生成Flash图表常见问题FAQ以及使用中的一些常见报错及调试/解决方法.本文继续介绍FusionCharts导出图表时的一些常见问题(FAQ). 问题描述:我尝试使用Download Package > Code > ExportChartSamples中导出FusionCharts图表时,到最后一步的时候总是报错? 解决方法:在运行下载包中的示例时,你需要进行下列安装步骤: 当运行服务器端示例时,确定你已把相关导出处理程序 (服务器端)

【网址】数学网址大全

中文数学专业网站:博士家园http://www.math.org.cnhttp://www.bossh.net 数理逻辑.数学基础:http://www.disi.unige.it/aila/eindex.html意大利逻辑及其应用协会的主页,包括意大利数理逻辑领域的相关内容. http://www.plenum.com/title.cgi?2110<代数与逻辑>,<西伯利亚代数与逻辑期刊>的翻译版,荷兰的Kluwer学术出版社提供其在线服务. http://forum.swart

C 语言资源大全中文版

C 语言资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-c 是 koz.ross 发起维护的 C 语言资源列表,内容包括了:构建系统.编译器.数据库.加密.初中高的教程/指南.书籍.库等等. Awesome 系列虽然挺全,但基本只对收录的资源做了极为简要的介绍,如果有更详细的中文介绍,对相应开发者的帮助会更大.这也是我们发起这个开源项目的初衷. 我们要做什么? 基于 awesome-c 列表,我们将对其中的各个资源项进行

[zencart技术分享]zencart视频课程大全

国内录制zencart教程(时长超6616.81分钟)最多的人. Zencart联盟合伙人发起人; 拥有3-4年的zencart实战经验; 录制zencart视频超过100G; 内部精美模板超过262个; 有需要可联系个人QQ/微信: 1251233090 手机:13825271762 1.zencart外贸自助快速建站课程2014新版 2.zencart管理应用大全手册97 3.zencart外贸建站之实用css技术教程 4.zencart模板系统文件结构及意义 5.zencart仿站技能要素

Ajax-ajax实例1-动态加载的 FAQ

动态加载 FAQ 的过程主要是利用 XMLHttpRequest(以下简称 XHR)对象与服务端通信,根据用户单击的感兴趣问题动态将内容加载到页面中.在具体实现时,有两点要注意的内容. 1 .对每个问题进行唯一标识FAQ 主要包含问题与解答两个部分,用户单击一个问题时,服务器必须知道请求的是哪个问题的解答,所以必须对每个问题进行唯一标识.标识的方法很多,在本例中简单使用数字进行标识.每个问题在页面上表现为超链接,单击链接将触发 onclick 事件,调用 loadFAQ 函数,传入问题标识,获取

CSS颜色代码大全

CSS颜色代码大全 颜色代码表(一): EEEEEE FFCCFF FF66FF FF00FF DDDDDD FFCCCC FF66CC FF00CC CCCCCC FFCC99 FF6699 FF0099 BBBBBB FFCC66 FF6666 FF0066 AAAAAA FFCC33 FF6633 FF0033 999999 FFCC00 FF6600 FF0000 888888 CCCCFF CC66FF CC00FF 777777 CCCCCC CC66CC CC00CC 666666

LoadRunner函数大全之中文解释

LoadRunner函数大全之中文解释

算法大全(c,c++)

http://www.2cto.com/kf/201109/105758.html 算法大全(C,C++)一. 数论算法 1.求两数的最大公约数function gcd(a,b:integer):integer;beginif b=0 then gcd:=aelse gcd:=gcd (b,a mod b);end ; 2.求两数的最小公倍数function lcm(a,b:integer):integer;beginif a<b then swap(a,b);lcm:=a;while lcm