jackr 发表于 2024-3-7 16:50:53

控件的ClassnameNN都一样,如何分别控制

本帖最后由 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):       
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):       
ID:        7407282
Text:        Energy
Position:        223, 166
Size:        89, 26
ControlClick Coords:        54, 21
Style:        0x5601000B

如附件图,


afan 发表于 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 也不一样,需要的话也可以加上,如 或者


多用 ControlGetHandle 调试,看看操作的控件是否正确。如果是前台操作,有些不用找控件点击,直接 Send TAB n次定位后 Enter 更方便快捷

3131210 发表于 2024-3-8 11:19:38

可以遍历之后,判断坐标或者大小,来确定

jackr 发表于 2024-3-8 14:06:28

谢谢两位答复。
同时谢谢afan的详细指正。图片上两个控件ClassnameNN是一样的,但我在实验中后来发现ClassnameNN值 也是会变的,特别是切换spyy++ control detection logic模式时
我后面用NAME:Command_Options 作为control ID 试成功了。
代码如下:
ControlClick("TestMinder MP Remote Control Software", "","","left")

ControlGetHandle 调试和TAB 操作,我再试下,非常感谢!
页: [1]
查看完整版本: 控件的ClassnameNN都一样,如何分别控制