|
複数ドライブに分散したアカウントデータを秀丸メールでアクセス出来るよう
にというのは、実は以前から何回かご要望いただいています。しかし、実現する
のに無理がありまして、対応出来てないです。
実現する上で無理があるのは何かというと、マクロで例えば、
$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");
|
|