首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

自动化操作轻巧入门系列3

2012-11-01 
自动化操作轻松入门系列3?转自:http://yonken.blogcn.com/diary,103098341.shtml?1、等待窗口系列命令/函数

自动化操作轻松入门系列3

?

转自:http://yonken.blogcn.com/diary,103098341.shtml

?

1、等待窗口系列命令/函数

AHK和AU3都提供了用法类似的一组窗口等待命令/函数:WinWait/WinWaitActive/WinWaitClose。

/函数的参数类似,现仅以WinWait为例说明。

AHK:

WinWait [, 窗口标题, 窗口文本, 超时时间, 排除标题, 排除文本]

AU3:

WinWait ( "窗口标题" [, "窗口文本" [, 超时时间]] )

WinWait 的作用是在目标窗口出现之前不再执行后面的所有语句

3.1.1 】

?????? AHK:

Run Notepad

WinWait, 无标题 - 记事本

MsgBox 记事本窗口已被打开!

AU3:

Run("Notepad")

WinWait("无标题 - 记事本")

MsgBox(0, "", "记事本窗口已被打开!")


2、激活窗口相关命令/函数
让目标窗口成为活动窗口的办法就是激活它,可用的命令/函数是WinActivate:

AHK:

WinActivate [,窗口标题, 窗口文本, 排除标题, 排除文本]

AU3:

WinActivate ( "窗口标题" [, "窗口文本"] )

?

3、关闭窗口

WinClose),另一种则是强行关闭窗口(WinKill):

AHK:

WinClose/WinKill [,窗口标题, 窗口文本, 超时时间,, 排除标题, 排除文本]

AU3:

WinClose/WinKill ( "窗口标题" [, "窗口文本"] )

?

3秒再关闭它:

3.1.2 】

?????? AHK:

Run, Sysdm.cpl

WinWait, 系统属性

WinActivate, 系统属性

WinWaitActive, 系统属性

Sleep, 3000

WinClose, 系统属性

WinWaitClose, 系统属性

AU3:

Run("Control Sysdm.cpl")

WinWait("系统属性")

WinActivate("系统属性")

WinWaitActive("系统属性")

Sleep(3000)

WinClose("系统属性")

WinWaitClose("系统属性")

?

?

4、更准确的标识窗口的方法(主要针对AHK脚本)

ID就能在一定程度上保证对窗口的准确标识。另外,每个窗口都有定义窗口类名(Class,比如说记事本窗口的类名就是Notepad),所以我们可以以此排除与目标窗口不同的其它窗口类。其实,我们还有一个更准确的方法:

Windows指派了一个可区别于其它窗口的唯一的标识符(ID),我们称之为窗口句柄(HWND)。

AHK:

WinGet[, 输出变量, ID, 窗口标题, 窗口文本, 排除标题, 排除文本]

AU3:

WinGetHandle ( "窗口标题" [, "窗口文本"] )

WinGet获得的窗口ID将通过“输出变量”返回,而WinGetHandle的返回值就是获得的窗口ID。

?

ID,然后根据这个进程ID获得它的窗口句柄,AHK支持使用进程ID作为窗口标题使用;但AU3不支持这样使用,只能先获得该窗口的类名再根据该类名来获得窗口句柄(不够保险):

3.1.3 】

AHK:

Run, NotePad, , , ThisPID

WinWait, ahk_pid %ThisPID%??? ???? ;这里的ahk_pid表明跟在后面的变量是进程ID

WinGet, ThisID, ID, ahk_pid %ThisPID%?? ???? ;ThisID将保存获得的窗口句柄

AU3:

?????? Opt("WinTitleMatchMode", 4)

Run("Notepad")

$handle = WinGetHandle("classname=Notepad")
现在暂且先忘记了AU3吧,因为它的窗口函数一般都不支持使用窗口句柄作为(窗口标题)参数。

AHK中使用窗口句柄,简单的说,凡是有“窗口标题”参数的命令就可以用窗口句柄来代替,比如:

3.1.4 】

AHK:

Run, Notepad, , , ThisPID?? ????? ;先获得运行的记事本程序的进程ID

WinWait, 无标题 - 记事本 ahk_pid %ThisPID%?? ?????? ;等待该进程窗口的出现

WinGet, ThisHWND, ID, 无标题 - 记事本 ahk_pid %ThisPID%? ?;获得窗口句柄

WinActivate, ahk_id %ThisHWND%??? ;这里的ahk_id表明跟在后面的变量是窗口句柄

WinWaitActive, ahk_id %ThisHWND%

Sleep, 3000

WinClose, ahk_id %ThisHWND%

WinWaitClose, ahk_id %ThisHWND%

热点排行