|
とりあえず、sendmessageする作戦のマクロ例をお返事します。
tkinfo.dllに関数追加するとなると、単純に「ここからここまで選択」みたいにいか
ない(飛び飛び選択とかも出来る)ので、パラメータの受け渡しがちょっと難しいで
す。なので、とりあえずsendmessage作戦でやって欲しい所です。
マクロの説明ですが…フォーカスのあるアイテムを取得するだけなら、LVM_GETNEX
TITEMでLVNI_FOCUSEDを指定するだけで簡単に出来ます。選択されてるアイテム一覧
を取得するには、LVNI_SELECTEDを何回も呼び出してやる必要があります。詳しくは、
"LVM_GETINEXTITEM"でgoogle検索すると出てくると思います。
------------------サンプルマクロ------------------------
#LVM_GETNEXTITEM = 0x1000 + 12;
#LVNI_SELECTED = 0x0002;
#LVNI_FOCUSED = 0x0001;
loaddll "tkinfo.dll";
#frame = hidemaruhandle(0);
#attach = dllfunc("Bypass_FindWindowEx", #frame, 0, 0, "添付ファイル");
if( #attach == 0 ) {
message "エラー1";
}
#listview = dllfunc("Bypass_FindWindowEx", #attach, 0, "SysListView32",
0 );
if( #listview == 0 ) {
message "エラー2";
}
#html = 0;
if( dllfuncstr("CurrentHeader", "X-Html:") != "" ) {
#html = 1;
}
#focusindex = sendmessage( #listview, #LVM_GETNEXTITEM, -1, #LVNI_FOCUSE
D );
if( #html ) {
#focusindex = #focusindex - 1;
}
#cSelect = 0;
#index = -1;
while(1) {
#index = sendmessage( #listview, #LVM_GETNEXTITEM, #index, #LVNI_SEL
ECTED );
if( #index < 0 ) {
break;
}
if( #html ) {
if( #index > 0 ) {
#aSelect[#cSelect] = #index - 1;
#cSelect = #cSelect + 1;
}
} else {
#aSelect[#cSelect] = #index;
#cSelect = #cSelect + 1;
}
}
$s = "選択数 = " + str(#cSelect) + "\n";
#i = 0;
while( #i < #cSelect ) {
$s = $s + "選択index" + str(#i + 1) + " = " + str(#aSelect[#i])
+ " " + dllfuncstr("CurrentHeader2", "X-Attach", #aSelect[#
i] ) + "\n";
#i = #i + 1;
}
$s = $s + "\n\nフォーカスインデックス = " + str(#focusindex);
message $s;
endmacro;
|
|