ListViewGetContent

ListViewから項目/行のリストを返します。

List := ListViewGetContent(Options, Control, WinTitle, WinText, ExcludeTitle, ExcludeText)

パラメータ

Options

型:文字列

何を取得するのかを具体的に示します。空白または省略された場合は、ListView 内の全てのテキストが取得されます。それ以外の場合は、次の単語を0個以上、スペースまたはタブで区切って指定します:

Selected:すべての行ではなく、選択された(ハイライトされた)行のみを返します。ない場合は、空白を返します。

Focused:フォーカスされている行のみを返します。ない場合は、空白を返します。

ColN: Returns only the Nth column (field) rather than all columns. Replace N with a number of your choice. For example, Col4 returns the fourth column.

Count:リストビューの行の総数を1つだけ返します。

Count Selected:選択されている(ハイライトされている)行の数を返します。

Count Focused: フォーカスされた行の行番号(位置)を返します(ない場合は0)。

Count Col:コントロール内のカラム数を返します(カウントが確定できない場合は-1)。

Control

型:文字列整数またはオブジェクト

コントロールのClassNN、テキスト、HWND、またはHwndプロパティを持つオブジェクトを指します。詳しくはControlパラメータをご覧ください。

WinTitle, WinText, ExcludeTitle, ExcludeText

型:文字列整数またはオブジェクト

もしこれらの項目が未設定または省略されたときは、最後に見つかったウィンドウが使用されます。そうでないときは、WinTitleウィンドウタイトルまたはターゲットウィンドウを識別するための他の基準、および/またはWinTextにターゲットウィンドウの単一のテキスト要素からの部分文字列(付属のWindow Spyユーティリティを使えばわかります)を指定します。

ExcludeTitleExcludeTextはウィンドウのタイトルまたはテキストで除外するために使用します。指定の仕方はWinTitleWinTextに似ていますが、ExcludeTitleはウィンドウのタイトル以外の基準(ウィンドウクラスやHWNDなど)を認識しません。

ウィンドウのタイトルとテキストは大文字と小文字を区別します。DetectHiddenWindows関数 と DetectHiddenText関数で変更しない限り、初期設定では非表示ウィンドウは検出されず、非表示テキストは検出されます。SetTitleMatchMode関数で変更しない限り、初期設定ではウィンドウのタイトルはその中のどこかにWinTitleまたはExcludeTitleを含んでいれば一致します。

戻り値

型:文字列

この関数は、項目/行のリストを返します。各行の中で、最後を除く各フィールド(列)はタブ文字(`t)で終わります。項目や行に個別にアクセスするには、例1.のような解析ループを使用します。

エラー処理

ウィンドウまたはコントロールが見つからないときは、TargetErrorがスローされます。

コントロールにメッセージを送信できなかった場合、またはユーザー権限の欠如やロックされているためにリストビューを所有するプロセスを開くことができなかった場合、OSErrorがスローされます。

ColNオプションで存在しないカラムを指定した場合、ValueErrorが投げられます。

備考

アプリケーションによっては、ListViewのテキストを非公開で保存し、そのテキストを取得できないようにしているものもあります。このような場合、通常、例外は発生しませんが、取得したフィールドはすべて空となります。

この例のように、SendMessageを介してListViewのカラムのサイズを変更することができます:

SendMessage(0x101E, 0, 80, "SysListView321", WinTitle)  ; 0x101E is the message LVM_SETCOLUMNWIDTH.

上記の場合、0は1列目を示します(2列目は1、3列目は2などを指定します)。また、80は新しい幅です。80を-1に置き換えると、カラムのサイズが自動化されます。これを-2に置き換えると、同じようになりますが、ヘッダーテキストの幅も考慮されます。

ControlGetItemsWinGetListControl関数

ListViewから個々の行とフィールドを抽出します。

List := ListViewGetContent("Selected", "SysListView321", WinTitle)
Loop Parse, List, "`n"  ; 行は改行(`n)で区切られます。
{
    RowNumber := A_Index
    Loop Parse, A_LoopField, A_Tab  ; Fields (columns) in each row are delimited by tabs (A_Tab).
        MsgBox "Row #" RowNumber " Col #" A_Index " is " A_LoopField
}