我正在尝试使用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控件的内容?
答案 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