找回密码
 加入
搜索
查看: 2672|回复: 6

[AU3基础] 针对这样的程序,想做这样的操作,请教思路和关键函数。。。(内详)

  [复制链接]
发表于 2010-6-23 16:14:04 | 显示全部楼层 |阅读模式
本帖最后由 sanfer8889 于 2010-6-23 16:20 编辑

有个显示统计结果的程序,只有一个tj.exe,运行后也是这一个tj.exe进程而已
有托盘图标,双击它会出现一个面板对话框,适当时候有结果会弹出另外一个结果对话框
也就是说,tj.exe进程会有两个对话框,面板对话框在任务栏上不出现。
AutoIt只对结果对话框,结果对话框类似微软 Office Excel那样,
一个主框,里面有Sheet1,Sheet2...那样的Tab标签,

这里有个很难搞的地方,就是结果对话框的Title跟随当前焦点Tab的内容名称,
每个Tab焦点的内容针对每次都不一样的,切换一下Tab,结果对话框Title又跟随变,
也就是说很难在任务栏众多的窗口中,以固定Title来判断出结果对话框,
Active成为当前系统的焦点窗口,再做一些窗口上点击按钮之类的操作。
而一个tj.exe会有两个窗口存在。
一个结果对话框最多能容下5个Tab,第六个Tab,会再生新的另一个结果对话框,成为它的第一个Tab,
如此类推,可以有N个结果对话框。。。

请教高手们,有什么思路把这个不固定Title的结果对话框给Active,或者不Active,
直接往这个对话框上的某个按钮/菜单模拟点击一下? 谢谢!
发表于 2010-6-23 16:19:04 | 显示全部楼层
基本思路就是用窗口句柄操作
 楼主| 发表于 2010-6-23 16:22:03 | 显示全部楼层
本帖最后由 sanfer8889 于 2010-6-23 16:26 编辑

titile不固定,如何获得句柄?
如果按tj.exe的Process来确定,那么它至少有1+N个窗口的可能性。
发表于 2010-6-23 16:48:08 | 显示全部楼层
本帖最后由 afan 于 2010-6-23 16:57 编辑

通过进程pid获取可见窗口,这里按你的描述应该最多就2个可见窗口。
这样的话可以再进行筛选,双击托盘的弹出窗口应该不会改变标题,可以此作为筛选条件,剩下的那个就是你要的了。
发表于 2010-6-23 21:21:12 | 显示全部楼层
考虑挺全面的嘛呵呵

评分

参与人数 1金钱 -30 贡献 -7 收起 理由
lynfr8 -30 -7 恶意灌水,扣分警告!

查看全部评分

 楼主| 发表于 2010-6-25 11:52:46 | 显示全部楼层
我已经获得tj.exe的进程PID号为tjid变量了,
请问应该用什么函数语句来得到所有窗口tiitle?
谢谢解答!
发表于 2010-6-25 12:28:19 | 显示全部楼层
Func _Pid2Handle($PID)
        ;Afan提示:通过进程pid返回包含其可见窗口标题和句柄的二维数组
        Local $Whall, $i, $pidHandle[1][2] = [[0]], $x = 1
        $Whall = WinList()
        For $i = 1 To $Whall[0][0]
                If WinGetProcess($Whall[$i][1]) = $PID And BitAND(WinGetState($Whall[$i][1]), 2) Then
                        ReDim $pidHandle[$x + 1][2]
                        $pidHandle[0][0] += 1
                        $pidHandle[$x][1] = $Whall[$i][1]
                        $pidHandle[$x][0] = $Whall[$i][0]
                        $x += 1
                EndIf
        Next
        Return $pidHandle
EndFunc   ;==>_Pid2Handle
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-6-1 21:26 , Processed in 0.077800 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表