フォルダ関連のマクロ関数についてNo.06357
civi さん 03/02/19 16:58
 
こんにちは。civiです。

フォルダ関連のマクロについて、次のような操作を実行するには、
どうしたらよいでしょうか?

・フォルダの一覧を取得したい
 マクロ関数には無いようですが、
 別のDLL(田楽DLL)などを用意して、実際のファイルシステムから
 調べるしか方法はないのでしょうか?

・フォルダに対して、未読状態を調べられますか?
 未読メールを保持するフォルダの状態が知りたいです。  
 フォルダ内のメールの未読状態を調べなければ、ならないのでしょうか?

鶴亀メールにはフォルダ移動関係の操作がないので、
マクロで実装できないものかと思っております。

よろしくお願いします。

[ ]
RE:06357 フォルダ関連のマクロ関数についNo.06358
秀まるお さん 03/02/19 19:11
 
>・フォルダの一覧を取得したい

 NextFolder関数を使って1つ1つのフォルダを全部選択しながら
CurrentAccount/CurrentFolder関数を使って取得するという手はあります。

 全部のフォルダを選択するとかなり時間がかかります。

> 別のDLL(田楽DLL)などを用意して、実際のファイルシステムから
> 調べるしか方法はないのでしょうか?

 そういうやり方については僕はなんとも言えませんが、並び順を調べるには、
subdir.binというファイルの中身を見ないといけないです。

>・フォルダに対して、未読状態を調べられますか?

 現状では方法はありません。しいて、「現在選択しているフォルダ中の未読
メール数」を返す関数なら作ってもいいです。例えば現状のMailCount関数にパ
ラメータを追加して、

 #unread = dllfunc("MailCount", "unread");
 #mark = dllfunc("MailCount", "mark");

 とか追加する程度なら簡単に出来ます。

[ ]
RE:06358 フォルダ関連のマクロ関数についNo.06359
civi さん 03/02/19 19:35
 
返信ありがとうございます。

> NextFolder関数を使って1つ1つのフォルダを全部選択しながら
>CurrentAccount/CurrentFolder関数を使って取得するという手はあります。

この関数の存在に気づきませんでした。
これを使うと確かにすべてのフォルダを走査することができますが、
これから移動するフォルダを探すためにフォルダ構成を知りたいだけなので、
選択までされなくてもいいです。確かに遅くなりそうですね。

> そういうやり方については僕はなんとも言えませんが、並び順を調べるには、
>subdir.binというファイルの中身を見ないといけないです。

subdir.binに構成があるのですね。ファイルシステムからディレクトリを
取得しようと思っていましたが、こちらの方が並び順も保持しているので、
いいですね。

>>・フォルダに対して、未読状態を調べられますか?
> 現状では方法はありません。しいて、「現在選択しているフォルダ中の未読
>メール数」を返す関数なら作ってもいいです。

こちらも選択しなければ分からないので、ちょっと機能的には不十分です。

(勝手な)要望としては、
1.フォルダのsubdir.binの内容を返す関数
 これがあれば、フォルダ構成は取得できるので助かります。
 複数のフォルダをどうやって返すかが問題ですけど。
 
 $folders = dllfunc("SubFolders", "フォルダ名");

2.フォルダの状態を返す関数
 特定のフォルダの未読状態などが分かれば、助かります。

1.は、別のDLLを用意すれば何とかなりますが、
2.は現状では分からないということですね。

とりあえず現状では無理なことが分かりました。
ありがとうございました。

[ ]
RE:06357 フォルダ関連のマクロ関数についNo.06361
PATIO さん 03/02/20 08:49
 
PATIOです。

この部分のみに反応しますが、

>鶴亀メールにはフォルダ移動関係の操作がないので、
>マクロで実装できないものかと思っております。

フォルダー移動というのは鶴亀上でD&Dでできる機能ではなくて
他の機能を指しているのでしょうか?
鶴亀上で移動する分にはこれでいけると思いますけれど。

[ ]
RE:06361 フォルダ関連のマクロ関数についNo.06362
civi さん 03/02/20 10:12
 
こんにちはPATIOさん。
返答ありがとうございます。

>フォルダー移動というのは鶴亀上でD&Dでできる機能ではなくて
>他の機能を指しているのでしょうか?

すみません。書き方が悪かったです。
私がマクロでやりたかったのは単に、フォルダを選択することです。
フォルダの並び順を変えたり、メールを移動することではなく、
マクロを使って特定のルールでフォルダを選択する機能です。
機能的にはマウスでツリーをクリックするだけのことです。

他のメーラーでは、受信フォルダ、などの特殊なフォルダに関しては
ボタン1つで移動できる機能があったりします。
マウスでクリックすれば済むことですが、キーボードだけでは、
受信フォルダに移動するのが、面倒なのでマクロで行おうと思いました。
ついでに、色々な条件から自動的にフォルダを選択する機能も
つけようと思い、「未読状態」を知る方法や、フォルダ構成を知る方法が
ないかと思った次第であります。

ここまで書いて、ふと鶴亀のキー割り当てを見てみたら、
なんと「受信フォルダを選択」というコマンドがありました!
メニューは全部見たつもりなのですが、メニューにはなくて、
キー割り当てでしか使えない機能があったとは知りませんでした。
それとも見つけられていないだけ?(笑)

[ ]
RE:06359 フォルダ関連のマクロ関数についNo.06367
秀まるお さん 03/02/20 14:43
 
 んでは、以下の関数を追加することにします。

 GetNextFolder/GetPrevFolder関数。

    $next = dllfuncstr("GetNextFolder", "Acc", "受信\\test");
    $prev = dllfuncstr("GetPrevFolder", "Acc", "受信\\test");

 GetFolderMailCount関数。

    #n = dllfunc("GetFolderMailCount", "Acc", "受信\\test", "all" );
    #n = dllfunc("GetFolderMailCount", "Acc", "受信\\test", "recent" );
    #n = dllfunc("GetFolderMailCount", "Acc", "受信\\test", "unread" );
    #n = dllfunc("GetFolderMailCount", "Acc", "受信\\test", "mark" );
    #n = dllfunc("GetFolderMailCount", "Acc", "受信\\test", "hot" );

 GetFolderHotState関数。

    #n = dllfunc("GetFolderHotState", "Acc", "受信\\test");

 GetFolderExpandState関数にパラメータ追加。

    #n = dllfunc("GetFolderExpandState", "Acc", "受信\\test");

 RecvMailCountInFolder関数にパラメータ追加。

    #n = dllfunc("RecvMailCountInFolder", "Acc", "受信\\test");

 アカウント名には""を指定すると現在アカウントという意味にします。
 アカウント名とフォルダ名に""を指定するか、または両方のパラメータを省略
した場合は現在フォルダという意味にします。

[ ]
RE:06367 フォルダ関連のマクロ関数についNo.06369
civi さん 03/02/21 10:04
 
こんにちは、civiです。

> んでは、以下の関数を追加することにします。
> GetNextFolder/GetPrevFolder関数。
> GetFolderMailCount関数。
> GetFolderHotState関数。
> GetFolderExpandState関数にパラメータ追加。
> RecvMailCountInFolder関数にパラメータ追加。

えっ!?いいんですか?
ありがとうございます。感激しました。

[ ]