ControlGet,List,不返回列表值

时间:2015-03-29 16:53:45

标签: autohotkey

我正在尝试使用ControlGet,List来获取AutoHotKey中列表视图的内容。这个listview是我写的一个简单的VB6应用程序。我正在使用:

ControlGet,List,List ,, ListViewWndClass1,WindowTitle

ListViewWndClass1是我从ActiveWindowInfo获得的类名。

当我查看List的返回值时,它是空白的。 ErrorLevel也是1.

我也尝试过:

ControlGet,List,List,Selected,SysListView321,下载

获取资源管理器窗口的内容(下载),并返回ErrorLevel 1。

我在这里做错了什么想法?

我很高兴使用PostMessage / SendMessage或DllCall(" SendMessage")来获取列表控件的内容。

有没有人使用AHK成功获取listview控件的内容?

1 个答案:

答案 0 :(得分:0)

某些当前控件看起来像listviews,但与旧的标准listview控件不同。 例如,Windows XP文件夹确实使用标准列表视图,但Windows 7没有。

假设您在标准列表视图控件上使用最新版本的AutoHotkey, 它应该能够检索文本,除非它属于故意阻止的程序 检索文本(尽管你仍然可以获得listview项目的计数)。

如果AutoHotkey的AccViewer可以检索类似listview / listview的控件的文本, 那么这意味着你应该能够通过Acc.ahk及其功能来检索它。

如果控件是标准列表视图,则必须完全正确地获取ControlGet参数,否则文本检索将无法正常工作:

;get window by title
ControlGet, vText, List, , SysListView321, Media Player Classic Home Cinema

;get window by class
ControlGet, vText, List, , SysListView321, ahk_class MediaPlayerClassicW

;get active window
ControlGet, vText, List, , SysListView321, A

;display the text
MsgBox %vText%

;put the text on the clipboard
Clipboard := vText

;e.g. get text via the Acc library
;note: requires Acc.ahk library in AutoHotkey\Lib folder
;https://github.com/Drugoy/Autohotkey-scripts-.ahk/blob/master/Libraries/Acc.ahk
;on right of screen right-click Raw, Save target as...

^q::
ControlGet, hCtl, Hwnd, , SysListView321, A
if !hCtl
Return
oAcc := Acc_Get("Object", "4", 0, "ahk_id " hCtl)
Loop, % oAcc.accChildCount
if (Acc_Role(oAcc, A_Index) = "list item")
vText .= oAcc.accName(A_Index) "`r`n"
Clipboard := vText
MsgBox %vText%
Return