AutoIt – 如何在 ListView 中 click 某個 item

今天在使用 AutoIt 時,想要對元件屬性為 SysListView32 做 double click 的動作,雖然 AutoIt 本身有針對 ListView 進行操作的 function 叫做 ControlListView() 但裡面的操作不能達到想要做的事情,因此上網找了一下方法。

原來在 AutoIt User Defined Functions 裡有很多其他可以使用的 function,因此我們可以透過 _GUICtrlListView 系列的 function 來達到我們想要做的事。

以 Media Player為例,我們想要讓點擊專輯中的某張專輯進到專輯頁面。

(透過 window info 工具可以看到紅色區塊為 syslistview 的元件。)
螢幕快照 2014-04-30 上午10.39.17

要使用 _GUICtrlListView 系列的 api 必須先

#include <GuiListView.au3>

之後我們可以透過 ControlGetHandle 取得 ListView 的 handle,
再來可以透過 _GUICtrlListView_FindInText 用元件的 Text 來找到 index,
最後透過 _GUICtrlListView_ClickItem 來點擊所要的元件。

完整範例:

#include <GuiListView.au3>

Run(@ProgramFilesDir & "\Windows Media Player\wmplayer.exe")
WinWaitActive("[TITLE:Windows Media Player]")

$ctrl = ControlGetHandle("Windows Media Player", "","[ID:7217]")
$count = _GUICtrlListView_GetItemCount($ctrl)
ConsoleWrite("The count of items is " & $count &@CRLF)

$index =_GUICtrlListView_FindInText($ctrl,"Mr. Scruff")
ConsoleWrite("Index of Mr. Scruff is " & $index & @CRLF)

_GUICtrlListView_ClickItem($ctrl, $index, "left", True, 2)
; left 表示按滑鼠左鍵,true 表示將滑鼠移到那個 item,2 為 click 的次數)

參考連結:
AutoIt _GUICtrlListView_ClickItem

廣告

發表迴響

Please log in using one of these methods to post your comment:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s