itzyx 发表于 2021-3-20 14:15:04

【已解决】非标准控件如何切换窗口列表

本帖最后由 itzyx 于 2021-3-23 15:50 编辑


如图所示,有两个窗口列表,点击下面 属性列表或者视频列表 可以切换窗口,我用 A大的窗口信息探测器获取    窗口标题:高速系统   控件类名:Afx:ControlBar:1a1c0000:8:10003:101   但是我尝试了很多方法都不能切换列表窗口   (目前用的笨方法 模拟鼠标点击,但是容易出错,希望能够去鼠标化)。 希望各位大佬能帮忙指点一下,万分感谢!

itzyx 发表于 2021-3-22 22:58:04

自己顶一下:face (36):

afan 发表于 2021-3-22 23:45:24

这种非大众软件,没有调试信息,没有代码,也就我会帮你看看
顺序、过程 方法都很重要,比如首先看获取的信息有没有用,有没有获取到句柄
Local $hC = ControlGetHandle('高速系统', '', 'Afx:ControlBar:1a1c0000:8:10003:101')
MsgBox(0, $hC, IsHWnd($hC))

itzyx 发表于 2021-3-23 09:45:51

afan 发表于 2021-3-22 23:45
这种非大众软件,没有调试信息,没有代码,也就我会帮你看看
顺序、过程 方法都很重要,比如首先看获取的 ...

实在感谢A大,我的问题95%以上都是A大帮我解决的,泪目!!
我刚试了一下 可以获取到句柄 ,这两个列表是窗口的列表,可以隐藏,也可以停靠, 一般是停靠在窗口的右界面,两个列表可以点击切换,用A大你的 Au3.WProbe 获取控件类名,截取的范围不同分别可以获取类名:Afx:ControlBar:29720000:8:10003:101    Afx:TabWnd:29720000:8:10003:101   SysListView321 ,现在我想每次可以切换窗口列表,这样我就可以点击 SysListView321 控件,进行操作了

afan 发表于 2021-3-23 11:17:56

itzyx 发表于 2021-3-23 09:45
实在感谢A大,我的问题95%以上都是A大帮我解决的,泪目!!
我刚试了一下 可以获取到句柄 ,这两个列表 ...
如果与 Au3.WProbe 里面显示的控件句柄一致那就有可操作的可能了,你可以试试以下:
将靶标拖到你需要点击的位置,确保坐标栏处于“控件”模式,复制坐标,替换下面的 x, y,$hC 为上面获取的句柄
ControlClick($hC, '', '', 'Left', 1, x, y)
如果没反应,可以试试前面加一行激活 高速系统 窗口

itzyx 发表于 2021-3-23 11:51:29

afan 发表于 2021-3-23 11:17
如果与 Au3.WProbe 里面显示的控件句柄一致那就有可操作的可能了,你可以试试以下:
将靶标拖到你需要点 ...

验证果然有效,想太复杂了,居然忘了控件点击也可以去鼠标化, 到时候加一个判断,是否点击正确这样应该也可以确保不出错了 ,太太太 感谢A大了!

itzyx 发表于 2021-3-24 11:13:20

afan 发表于 2021-3-23 11:17
如果与 Au3.WProbe 里面显示的控件句柄一致那就有可操作的可能了,你可以试试以下:
将靶标拖到你需要点 ...

A大麻烦再请教一下,我发现这个控件类名 每次打开软件会变化,比如这次是:Afx:TabWnd:29720000:8:10003:101下次就变成了:Afx:TabWnd:9af30000:8:10003:101    然后发现规律就TabWnd 后面的8位字符串会变化   我用 正则表达式 表示控件类名+:8:10003:101],怎么好像不行啊 。

afan 发表于 2021-3-24 11:48:47

itzyx 发表于 2021-3-24 11:13
A大麻烦再请教一下,我发现这个控件类名 每次打开软件会变化,比如这次是:Afx:TabWnd:29720000:8:10003: ...

如果只是 "TabWnd 后面的8位字符串会变化" 的话,上面的应该能匹配,但看不到你的完整代码,没法说,有时候都是些简单的错误。
这种控件应该有 NAME,可以试试用自带的探测器查看,这个 NAME 是不变的。

itzyx 发表于 2021-3-24 12:02:03

afan 发表于 2021-3-24 11:48
如果只是 "TabWnd 后面的8位字符串会变化" 的话,上面的应该能匹配,但看不到你的完整代码,没法说,有时 ...

明白了,代码没错,是因为 Class:Afx:TabWnd:9af30000:8:10003:10ClassnameNN:        Afx:TabWnd:9af30000:8:10003:101两个区别我把 Instance: 1也写进去了 , 顺便问一下,
获取控件坐标的方式 这种写法 对吗 $handle=ControlGetHandle("高速系统", "","")

afan 发表于 2021-3-24 12:09:04

itzyx 发表于 2021-3-24 12:02
明白了,代码没错,是因为 Class:Afx:TabWnd:9af30000:8:10003:10ClassnameNN:        Afx:TabWnd:9af30000:8: ...

没试过,但应该正确。坐标固定的话应该可以。

itzyx 发表于 2021-3-24 12:26:58

afan 发表于 2021-3-24 12:09
没试过,但应该正确。坐标固定的话应该可以。

好的   感谢A大 {:face (468):}

itzyx 发表于 2021-3-28 11:57:19

afan 发表于 2021-3-24 12:09
没试过,但应该正确。坐标固定的话应该可以。

A大我一直都在用你的 Au3.WProbe, 感觉非常好用,能不能麻烦问个延伸问题,就是这个Afan - www. autoitx. com 文本 是状态栏文本嘛? 是怎么设置成这样的,感觉好炫酷。
我设置了字体,控件颜色好像都没起作用
#include <GuiStatusBar.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("Form1", 400, 300)
$StatusBar1 = _GUICtrlStatusBar_Create($Form1)
Local $sFont = "Comic Sans MS"
GUISetFont(-1,6,400,2,$sFont)
Dim $StatusBar1_PartsWidth = [-1]
_GUICtrlStatusBar_SetParts($StatusBar1, $StatusBar1_PartsWidth)
_GUICtrlStatusBar_SetText($StatusBar1, @tab&@tab&"BY-ZYX", 0)

GUISetState()

While 1
      $nMsg = GUIGetMsg()
      Switch $nMsg
                Case -3
                        Exit

      EndSwitch
WEnd

afan 发表于 2021-3-28 12:02:10

itzyx 发表于 2021-3-28 11:57
A大我一直都在用你的 Au3.WProbe, 感觉非常好用,能不能麻烦问个延伸问题,就是这个Afan - www. autoitx. ...

只是简单的禁用状态(128) 就行了
GUICreate('')
GUICtrlCreateLabel('autoitx.com', 100, 100)
GUICtrlSetState(-1, 128)
GUISetState()
While GUIGetMsg() <> -3
WEnd

itzyx 发表于 2021-3-28 12:24:41

afan 发表于 2021-3-28 12:02
只是简单的禁用状态(128) 就行了

搜嘎,谢谢A大居然还能这样用,学到了
页: [1]
查看完整版本: 【已解决】非标准控件如何切换窗口列表