アカウントフォルダの指定先追加の要望No.42304
YK さん 12/02/23 23:23
 
いつも、たいへん便利に使わせていただいています。要望が有りメールしました。
もし可能でしたら、ご検討のほどよろしくお願いいたします。

要望:
 現状、ホームディレクトリ配下にすべてのアカウントデータが配置されて
 いるが、アカウントごとにディレクトリを指定できるようにして欲しい。
 そして定期受信の設定みたいな選択画面によって各アカウント表示のメール
 表示有無を選択可能とし、必要なときだけ指定アカウント(たとえば外付けHD)
 の各フォルダを表示し、メールが確認できるようにして欲しい。
 さらに新規に送受信することが無い、保存だけのアカウント用に、DVDなど書き
 込み不可メディアでの保存にも対応して欲しい。(保管のみフラグなどがチェッ
 クされると、そのアカウントフォルダへは書き込みに行かないなど)
理由:
 通常使用しているPCには、いつも使うアカウントのみ保存しておきたい。
 現在余り使わず、たまに過去メールを確認する程度のアカウントは、
 外付けハードディスクに保存しておきたい。
 新規送受信の予定が全くなく保管だけのアカウントは、DVDやCDなどで保存したい。
メリット:
 個人情報流出リスクの低減。
 めったに使わないアカウントを外付けHDなどへ移すことで、PC HDのスペースが
 確保できる。
 よく使うアカウントのみをデータバックアップすれば良いのでバックアップ時間
 を短縮できる。
 ほとんど使わないアカウントはメインPCから削除しても、必要が生じた時に
 すぐメール確認できるので、削除しても安心感がある。

以上、よろしくお願いします。

[ ]
RE:42304 アカウントフォルダの指定先追加No.42307
秀まるお2 さん 12/02/24 10:11
 
 複数ドライブに分散したアカウントデータを秀丸メールでアクセス出来るよう
にというのは、実は以前から何回かご要望いただいています。しかし、実現する
のに無理がありまして、対応出来てないです。

 実現する上で無理があるのは何かというと、マクロで例えば、

   $path = dllfuncstr("HomeDir") + dllfuncstr("CurrentAccount") + "\\"
       + dllfuncstr("CurrentHeader", "X-Attach:");

 みたいな処理をしてると、仮にそのアカウントが別ドライブのアカウントだと
すると、パス名が間違ってしまうってことになるので、そういうマクロ類は一切
動かないことになります。そういう、マクロの非互換が発生するのが良くないと
思うので、対応してないです。

 今ちょっと何かいい方法が無いか探したら、昔のMS-DOSでのsubst/append
コマンドみたいなことが現在のWindowsでも出来ることを見つけました。現在の
Windows(Vista以降)では「ジャンクション」って機能になるようです。

 詳しくはこちらに書いてあります。
  http://www.atmarkit.co.jp/fwin2k/win2ktips/991fjunction/fjunction.html

 そのジャンクションて仕組みを使って、外付けハードディスク上にある
アカウント用のフォルダを、あたかも内蔵ハードディスク上の秀丸メール用
フォルダ配下にあるフォルダのように見せかけることが出来るようです。

 しいてやるとしたら、この仕組みを使っていただくしか無いかと思います。




 秀丸メールのマクロからmklinkコマンドを呼び出して、アカウントを追加した
り削除したりってことも出来ました。今ちょっとサンプルマクロを作ってみまし
た。このマクロは、

 秀丸メールのデータ用フォルダが e:\hidemailhome\
 ダミー用に、e:\hidemailhome2\ っていうメールデータ用フォルダがある。
 追加して見たいアカウント用フォルダが、e:\hidemailhome3\test@test である。

 って例でのサンプルマクロになります。こんな感じでどうでしょうか。

    loaddll "tkinfo.dll";
    $home = dllfuncstr("HomeDir");
    if( $home != "e:\\hidemailhome\\" ) {
        message "ホームディレクトリが違うのでマクロ終了します。";
        endmacro;
    }
    if( existfile( $home + "test@test" ) ) {
        $q = "test@testアカウントのジャンクションを削除してもいいですか?";
        $command = "cmd /c rmdir " + $home + "test@test";
    } else {
        $q = "test@testアカウントのジャンクションを作成してもいいですか?";
        $command = "cmd /c mklink /j " + $home
                         + "test@test e:\\hidemailhome3\\test@test";
    }
    question $q;
    if( result != yes ) {
        endmacro;
    }
    openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
    writeregstr "HomeDir", "e:\\hidemailhome2\\";
    closereg;
    #n = dllfunc("EnvChanged");
    runsync2 $command;
    openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
    writeregstr "HomeDir", "e:\\hidemailhome\\";
    closereg;
    #n = dllfunc("EnvChanged");

[ ]
RE:42307 アカウントフォルダの指定先追加No.42316
YK さん 12/02/25 20:22
 
お忙しいところ、サンプルマクロまで作っていただきありがとうございました。
マクロを動作させてみました。やりたかったことのイメージ通りでした。
ありがとうございました。この方法で使わせていただきます。

これまでも要望が有ったとのことなので、作っていただいたサンプルマクロを
今後、使ってみようと思われる方へ、私のメモを書いておきます。
(ひょっとすると参考になる方がいらっしゃるかもと思ったので、僭越ですが...)

今回は、ありがとうございました。

───── サンプルマクロの3つのディレクトリに関するメモ ─────
@ >秀丸メールのデータ用フォルダが e:\hidemailhome\
A >ダミー用に、e:\hidemailhome2\ っていうメールデータ用フォルダがある。
B >追加して見たいアカウント用フォルダが、e:\hidemailhome3\test@test である。

@が通常、使用しているホームディレクトリです。
設定(O)→基本→ホームディレクトリ
で設定しているディレクトリです。

Aはジャンクションを繋いだり、切ったりする際に、"一瞬だけ"秀丸メール本体を
退避させるダミーのディレクトリです。事前に
設定(O)→基本→ホームディレクトリ
にて、ダミーのディレクトリ名で受信や草稿フォルダなど一式(中味は空でOK)を作
っておくと
良いです。もちろんダミーなので、ディレクトリの場所以外は、メールサーバーや
アカウント設定など全部でたらめでOKです。

Bは外付けHDなどの別フォルダに、退避させたいアカウントの保管場所です。
例えばホームディレクトリがe:\hidemailhome\で、二つのアカウントhoge1とhoge2が
あるとき
メールデータは
 e:\hidemailhome\hoge1\〜
 e:\hidemailhome\hoge2\〜
みたいに保存されています。今回、hoge2を外付けHD(例 g:\)へ移動させたいときは、
サンプルマクロを使う前に、"e:\hidemailhome\hoge2\〜"を全て外付けHD(g:\)
へコピーしておいてください。コピー先のフォルダ名は何でも良いです。
"g:\hoge2コピー\"でも"g:\test@test\" でもOK。ご自由に。

後は、自分が使うフォルダ名やアカウント名に合わせて、サンプルマクロの
ディレクトリ@〜Bを変更します。もしも移動したいアカウントがいくつか有る場合
は、
runsync2 $command;をrunsync2 $command[#i];みたいな感じで、アカウント数だけ
流すようにします。

マクロの動きがイメージ通りの動きだったら、元々の"e:\hidemailhome\hoge2\〜"は
不要となるので(外付けHDへコピーできたので)削除可能です。
参照したいときは、マクロを流してジャンクションを繋げば、外付けHDに
コピーしたメールが表示されます。
もう一度マクロを流せば、ジャンクションが切られて、見えなくなります。

[ ]