[ 新規に投稿する ]

添付ファイル枠でのファイル名文字列取得No.03399
misono さん 12/09/28 09:55 [ コメントを投稿する ]
  いつもありがとうございます。

添付ファイル付きメールが選択されており、添付ファイル枠にフォーカスがあり、現在フォーカスされている添付ファイルの添付名をマクロで取得したいと考えています。

ちょうど、カレンダー表示で有効な

CalendarDate, CalendarDays関数

のようなものです。

現状で何かやり方があればと思いsendmessageでとれないかとも思ったのですがどうやら難しいようです。

追加していただきたいのですがいかがでしょうか。
[ ]
RE:03399 添付ファイル枠でのファイル名文字列取得No.03400
秀まるお さん 12/09/28 10:50 [ コメントを投稿する ]
  とりあえず、sendmessageする作戦のマクロ例をお返事します。
tkinfo.dllに関数追加するとなると、単純に「ここからここまで選択」みたいにいかない(飛び飛び選択とかも出来る)ので、パラメータの受け渡しがちょっと難しいです。なので、とりあえずsendmessage作戦でやって欲しい所です。

 マクロの説明ですが…フォーカスのあるアイテムを取得するだけなら、LVM_GETNEXTITEMで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_FOCUSED );
    if( #html ) {
        #focusindex = #focusindex - 1;
    }

    #cSelect = 0;
    #index = -1;
    while(1) {
        #index = sendmessage( #listview, #LVM_GETNEXTITEM, #index, #LVNI_SELECTED );
        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;
[ ]
RE:03400 添付ファイル枠でのファイル名文字列取得No.03405
misono さん 12/09/29 17:24 [ コメントを投稿する ]
   MISONOです。

>とりあえず、sendmessageする作戦のマクロ例をお返事します。

早速の対応と丁寧なサンプルマクロをありがとうございました。
いろいろと動作テストしてますが、かなり満足しています。

ありがとうございました。
[ ]

[ 新規に投稿する ]