找回密码
 加入
搜索
查看: 174|回复: 3

[AU3基础] 控件的ClassnameNN都一样,如何分别控制

[复制链接]
发表于 2024-3-7 16:50:53 | 显示全部楼层 |阅读模式
本帖最后由 jackr 于 2024-3-7 16:50 编辑

各位大神帮忙看下,我在用AutoIt v3 window Info v3.3.16.0工具获取两个不同控件(一个是按钮,另一个是勾选控件)得到的ClassnameNN的值都一样,ID因为软件每次打开都会变化,所以没办法用ID来区分不同控件。
我在用ControlClick 点击函数时发生了很大困扰,应该如何写controlID 这个值呢?

ControlClick ( "title", "text", controlID [, button = "left" [, clicks = 1 [, x [, y]]]] )



按钮控件获取信息如下:

>>>> Window <<<<
Title:        TestMinder MP Remote Control Software 1.0
Class:        WindowsForms10.Window.8.app.0.1a0e24_r6_ad1
Position:        83, 82
Size:        898, 477
Style:        0x16CB0000
ExStyle:        0x00050300
Handle:        0x00000000002A00C8

>>>> Control <<<<
Class:        WindowsForms10.BUTTON.app.0.1a0e24_r6_ad1
Instance:        8
ClassnameNN:        WindowsForms10.BUTTON.app.0.1a0e24_r6_ad18
Name:        Command_Options
Advanced (Class):        [NAME:Command_Options]
ID:        2557624
Text:        Options
Position:        19, 369
Size:        66, 28
ControlClick Coords:        46, 9
Style:        0x5601000B
ExStyle:        0x00000000
Handle:        0x00000000002706B8




勾选控件获取信息如下:
check Energy Measurement
>>>> Window <<<<
Title:        TestMinder MP Remote Control Software 1.0
Class:        WindowsForms10.Window.8.app.0.1a0e24_r6_ad1
Position:        52, 52
Size:        898, 477
Style:        0x16CB0000
ExStyle:        0x00050300
Handle:        0x00000000005C0706

>>>> Control <<<<
Class:        WindowsForms10.EDIT.app.0.1a0e24_r6_ad1
Instance:        3
ClassnameNN:        WindowsForms10.EDIT.app.0.1a0e24_r6_ad13
Name:        Check_Energy
Advanced (Class):        [NAME:Check_Energy]
ID:        7407282
Text:        Energy
Position:        223, 166
Size:        89, 26
ControlClick Coords:        54, 21
Style:        0x5601000B


如附件图,


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2024-3-8 10:13:17 | 显示全部楼层
本帖最后由 afan 于 2024-3-8 11:27 编辑
获取两个不同控件(一个是按钮,另一个是勾选控件)得到的ClassnameNN的值都一样

你这贴出来的也不一样吧(图是错的,是同一个控件的信息):

按钮:WindowsForms10.BUTTON.app.0.1a0e24_r6_ad18
选框:WindowsForms10.EDIT.app.0.1a0e24_r6_ad13
controlID 就用这两个不就行了,比如点击按钮
ControlClick('WindowsForms10.EDIT.app.0.1a0e24_r6_ad13', '', ‘WindowsForms10.BUTTON.app.0.1a0e24_r6_ad18’)

NAME 也不一样,需要的话也可以加上,如 [CLASS:WindowsForms10.BUTTON.app.0.1a0e24_r6_ad1;NAME:Command_Options] 或者 [CLASSNN:WindowsForms10.BUTTON.app.0.1a0e24_r6_ad18;NAME:Command_Options]


多用 ControlGetHandle 调试,看看操作的控件是否正确。如果是前台操作,有些不用找控件点击,直接 Send TAB n次定位后 Enter 更方便快捷
发表于 2024-3-8 11:19:38 | 显示全部楼层
可以遍历之后,判断坐标或者大小,来确定
 楼主| 发表于 2024-3-8 14:06:28 | 显示全部楼层
谢谢两位答复。
同时谢谢afan的详细指正。图片上两个控件ClassnameNN是一样的,但我在实验中后来发现ClassnameNN值 也是会变的,特别是切换spyy++ control detection logic模式时
我后面用NAME:Command_Options 作为control ID 试成功了。
代码如下:
ControlClick("TestMinder MP Remote Control Software", "","[NAME:Command_Options]","left")

ControlGetHandle 调试和TAB 操作,我再试下,非常感谢!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-2 17:22 , Processed in 0.074787 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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