1

listViewControl 内で定義されたチェックボックスを「チェック」および「チェック解除」する必要がある Autohotkey スクリプトを作成しています。

それを行う方法は、LVM_SETITEMSTATEパラメーターを使用してSendMessageをリストビュー(またはリストビューアイテム自体)に使用することだと思いますが、正確な形式はわかりません...誰かアイデアがありますか?

SendMessage, LVM_SETITEMSTATE, 1000, SysListView321

1000 はチェックボックスがチェックされることを意味し、2000 は彼がチェックされないことを意味すると思います。

ListViewItem ごとにループする必要がありますか?

私も使用しようとしました

 LV_Modify(0, "+Checked")

しかし、それもうまくいかないようです。

問題を強調するために、私は独自のリスト ビューを作成しているのではなく、既存のアプリケーション ListView の状態を操作しようとしています。しかし、この画面では、最初にすべてのコンポーネントを選択してから、次の画面に移動する必要があります) ここに AutoHotKey エキスパートはいますか?

4

1 に答える 1

2

この問題を解決する1つの方法(エレガントではない方法)は次のとおりです。

ControlGet, List, List,, SysListView321,,,,
{    
    Loop, Parse, List, `n  ; Rows are delimited by linefeeds (`n).
    {           
        RowNumber := A_Index
        Loop, Parse, A_LoopField, %A_Tab%   ; Fields (columns) in each row are delimited by tabs (A_Tab).
        {                               
            if A_Index = 3 
            {               
                IfInString, HaystackTemp, %A_LoopField%
                {                       
                    ControlSend, SysListview321, {Space}                        
                }
            }
        }
        ControlSend, SysListview321, {Down}                         
    }
}

もっとエレガントな方法を知っていますか?

于 2010-06-13T14:12:13.683 に答える