秀丸メール持ち出しキットでのマクロ動作No.33198
kuro0000 さん 08/02/01 10:23
 
これまで仕事用のホームディレクトリ(C:\HidemaruMaildata\work\)とプライベー
ト用のホームディレクトリ(C:\HidemaruMaildata\private\)を下記マクロを用いマ
クロ用ボタンでワンタッチで切替えていました。


// 切替C

    loaddll "tkinfo.dll";
    openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
    $s = getregstr("HomeDir");
    if( $s == "C:\\HidemaruMaildata\\work\\" ) {
        $s = "C:\\HidemaruMaildata\\private\\";
    } else if( $s == "C:\\HidemaruMaildata\\private\\" ) {
        $s = "C:\\HidemaruMaildata\\work\\";
    } else {
        message "HomeDirが想定外です。HomeDir=" + $s;
        endmacro;
    }
    writeregstr "HomeDir", $s;
    closereg;
    #n = dllfunc("EnvChanged");


秀丸メール持ち出しキットを用いて秀丸メールを外部メモリ(Y)上で動作させたい
のでTuruKame.exeを含むHidemaruMailProgram及びHidemaruMaildataを外部メモリ
(Y)上に置き、ホームディレクトリをY:\HidemaruMaildata\work\に設定した上でマ
クロ構文を下記に書き換えました。
(切替Yマクロは外部メモリ(Y)上のHidemaruMailProgramフォルダ内に置いてあり
ます)

// 切替Y

    loaddll "tkinfo.dll";
    openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
    $s = getregstr("HomeDir");
    if( $s == "Y:\\HidemaruMaildata\\work\\" ) {
        $s = "Y:\\HidemaruMaildata\\private\\";
    } else if( $s == "Y:\\HidemaruMaildata\\private\\" ) {
        $s = "Y:\\HidemaruMaildata\\work\\";
    } else {
        message "HomeDirが想定外です。HomeDir=" + $s;
        endmacro;
    }
    writeregstr "HomeDir", $s;
    closereg;
    #n = dllfunc("EnvChanged");

マクロを実行したところ次のエラーメッセージが出てしまいます。

HomeDirが想定外です。HomeDir=Y:\HidemaruMaildata\work\

秀丸メール持ち出しキット“の案内に“このキットを作って作成された持ち出し用の
秀丸メールは、いわゆる「レジストリ」やパソコン内蔵のハードディスクを書き換え
ることなく動作します。”とありますのでレジストリをいじるマクロは動作しないの
だと思いますが、試しに秀丸メール持ち出しキットを用いず秀丸メール本体はシステ
ムドライブ(C)から動作させ、HidemaruMaildataのみを外部メモリ(Y)におき、
ホームディレクトリをY:\HidemaruMaildata\work\に設定した上で切替Cマクロを切替
Yマクロに変更した上で実行してもやはり

HomeDirが想定外です。HomeDir=Y:\HidemaruMaildata\work\

のエラーが出てしまいます。

このマクロはHidemaruMaildataを外部メモリに置いた時点で使えないのでしょうか?
あるいは他の方法で外部メモリに置いた二つのホームディレクトリをワンタッチで切
替えられないでしょうか?

[ ]
RE:33198 秀丸メール持ち出しキットでのマNo.33200
秀まるお2 さん 08/02/01 17:47
 
 秀丸メール持ち出しキット配下で秀丸メールが動作してる場合、マクロの
openreg/getregstr等は、レジストリにはアクセスに行かずに、HmMail.iniフ
ァイルの方にアクセスに行きます。

 実際、そのエラーメッセージに出ている

   「 HomeDirが想定外です。HomeDir=Y:\HidemaruMaildata\work\」

 というメッセージの中は正しくYドライブになっているように思います。

 マクロの内容的も間違ってないようだし、なぜそういうエラーになるのかち
ょっと分からないんですが…。困りました。

 どこか、パス名の大文字/小文字が違ってるとかってことは無いですかね?。
それか、エラーメッセージの内容をよく見ると、実はちょっと文字列が違って
るとか。その辺を確認してみて欲しいです。

 どうしても分からないようであれば、

    loaddll "tkinfo.dll";
    $path1 = "Y:\\HidemaruMaildata\\work\\";
    $path2 = "Y:\\HidemaruMaildata\\private\\";
    openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
    $s = getregstr("HomeDir");
    if( $s == "Y:\\HidemaruMaildata\\work\\" ) {
        $s = "Y:\\HidemaruMaildata\\private\\";
    } else if( $s == "Y:\\HidemaruMaildata\\private\\" ) {
        $s = "Y:\\HidemaruMaildata\\work\\";
    } else {
        writeinistr "Y:\\test.ini", "Test", "path1", $path1;
        writeinistr "Y:\\test.ini", "Test", "path2", $path2;
        writeinistr "Y:\\test.ini", "Test", "path3", $s;
        message "HomeDirが想定外です。HomeDir=" + $s;
        endmacro;
    }
    writeregstr "HomeDir", $s;
    closereg;
    #n = dllfunc("EnvChanged");

 にしてみて、それでY:\test.iniファイルを秀丸エディタで開いてみて、
path3が、たしかにpath1にもpath2にも一致してないかどうか確認してみて欲
しいです。どこか違ってるはずだと思います。

[ ]
RE:33200 秀丸メール持ち出しキットでのマNo.33201
アルビレオ さん 08/02/01 18:33
 
ユーザーのアルビレオです。

> どうしても分からないようであれば、

それよりもまずは
 $s = getregstr("HomeDir");
の直後に
 message $s;
を入れて、直接内容を確認してみた方が手っ取り早いし、原因もすぐにわかるよ
うに思います。

[ ]
RE:33201 秀丸メール持ち出しキットでのマNo.33205
kuro0000 さん 08/02/02 13:25
 
kuro0000です。

秀まるおさん、アルビレオさん、ご教示ありがとうございました。

残念ながらいずれの方法もまだ試すことが出来ていません。

というのは「秀丸メール持ち出しキット」がインストールできなくなった為です。
(手順に従って持ち出し用外部メモリにインストールしてもインストール先フォルダ
には「HmMail.ini」「HmRegIni.chm」「HmRegIni.chm」の3つしか作成されず「Turu
Kame.exe」などが作成されないため立ち上げられません。)

おそらく全ての秀丸メール(色々試みたのでシステムドライブ、外部メモリに秀丸
メール本体や持ち出しキットがインストールされたままです)をアンインストールし
てすっきり整理すればインストールできるはずですが、とりあえず下記の方法でマク
ロが動作しているので様子見の状況です。

現在は持ち出し用外部メモリに「秀丸メール持ち出しキット」ではなく「秀丸メー
ル」をインストールする事によってマクロは動作しております。

// 切替Y

    loaddll "tkinfo.dll";
    openreg "CURRENTUSER", "Software\\Hidemaruo\\TuruKame\\Config";
    $s = getregstr("HomeDir");
    if( $s == "Y:\\HidemaruMaildata\\work\\" ) {
        $s = "Y:\\HidemaruMaildata\\private\\";
    } else if( $s == "Y:\\HidemaruMaildata\\private\\" ) {
        $s = "Y:\\HidemaruMaildata\\work\\";
    } else {
        message "HomeDirが想定外です。HomeDir=" + $s;
        endmacro;
    }
    writeregstr "HomeDir", $s;
    closereg;
    #n = dllfunc("EnvChanged");

「秀丸メール持ち出しキット」ではなく「秀丸メール」をインストールする時点で
「持ち出し」ではなくなり、使用先のパソコンを汚さないという意味では御法度かも
しれません。
ただ、自宅と持ち出し先でメールデータの同期を取る必要がなく、職場でもワンクリ
ックでプライベートメールが使える(と言うよりワンクリックで仕事用メールに装え
る)という点では大変重宝しておりますので、原因が究明されるまでは、自宅と職場
のパソコンに限定し、暫くこの方法で使ってみようと思います。

[ ]
RE:33205 秀丸メール持ち出しキットでのマNo.33207
秀まるお2 さん 08/02/04 10:21
 
 現状でうまく動作されてるのであればそのままの方がいいと思いますが、あ
えて持ち出し用の秀丸メールを手作業で作るとしたら…。

 秀丸メールをインストールしたフォルダにあるファイル一式を持ち出し用の
ドライブにコピーして、そこにHmRegIni.dllを置けばいいです。それで持ち出
し用にはなります。

 そこにHmMail.iniファイルがあれば最初からそれを使って(その中に書いて
ある設定の通りに)動作します。

 HmMail.iniが存在しない状態で秀丸メールを起動すると、今現在のパソコン
のレジストリの内容からHmMail.iniを新規に生成する動作となります。

[ ]
RE:33207 秀丸メール持ち出しキットでのマNo.33257
kuro0000 さん 08/02/07 14:35
 
参考にさせて頂きます。ありがとうございました。

[ ]