レジストリからマクロパスを取得する方法No.00678
ぱと さん 06/05/04 21:32
 
秀丸メールのマクロ関係で、レジストリからマクロファイル用のフォルダ名を取
得する方法を模索しています。

※マクロの内部からは、$MacroPath = macrodir; のように簡単に取得できる
 わけですが、都合により、マクロから WSH スクリプトを使い、その実行時点
 でのマクロパスを使うので、レジストリから取得したいです。

※いったん、マクロ上で取得して、それを WSH スクリプトに渡すという手もあ
 るかもしれませんが、それはそれでまた別に考えます。

秀丸メールの[秀丸エディタの動作環境]内で、マクロファイル用のフォルダを指
定してある時は、
RegRead("HKCU\Software\Hidemaruo\Hidemaru\Env\MacroPath")
とすれば良いだろうと思います。しかし、上記の設定がしていない時には、
このキー自体が存在していません。

この場合、秀丸エディタがインストールされている環境では、その秀丸エディタ
のインストールフォルダがマクロフォルダになり、されていない場合は、秀丸
メールのインストールフォルダがマクロフォルダになるという仕様であるようで
す。

秀丸メールのインストールフォルダは、
HKCU\Software\Hidemaruo\TuruKame\Config\TuruKameDir
を参照すれば良いですが、秀丸エディタのインストールフォルダは
レジストリ内には(少なくとも HKCU\Software\Hidemaruo 内には)記録されてい
ないようです。

こういった条件化で、マクロパスをレジストリから取得するにはどうすれば良い
でしょうか?

秀丸メールと同様に、秀丸エディタに
HKCU\Software\Hidemaruo\Hidemaru\Env\HidemaruDir
というキーが用意されるか、あるいは、マクロ用のフォルダをユーザーが指定し
ていない時でも
HKCU\Software\Hidemaruo\Hidemaru\Env\MacroPath
が値を持っていれば話は早いのですけれど。

----
ぱと

[ ]
RE:00678 レジストリからマクロパスを取得No.00679
h-tom さん 06/05/05 20:26
 

h-tom です。

>秀丸メールのインストールフォルダは、
>HKCU\Software\Hidemaruo\TuruKame\Config\TuruKameDir
>を参照すれば良いですが、秀丸エディタのインストールフォルダは
>レジストリ内には(少なくとも HKCU\Software\Hidemaruo 内には)記録されてい
>ないようです。
秀丸エディタの会議室のログ検索すればわかりますが、インストール情報から取得
するしかありません。
これも、インストーラを使用しないで、コピー+レジストリ情報の保存/復元を
行った場合は、おそらく無効でしょう。

状況がよくわかりませんが・・・。
>※マクロの内部からは、$MacroPath = macrodir; のように簡単に取得できる
> わけですが、都合により、マクロから WSH スクリプトを使い、その実行時点
> でのマクロパスを使うので、レジストリから取得したいです。
"マクロから WSH スクリプトを使い"ってのが、"マクロからWSHを実行する"なら
引数で渡せばすむ話なんですけどね。

[ ]
RE:00679 レジストリからマクロパスを取得No.00680
ぱと さん 06/05/07 12:44
 
h-tom さん

秀丸メールユーザーのぱとと申します。

>>秀丸メールのインストールフォルダは、

>秀丸エディタの会議室のログ検索すればわかりますが、インストール情報から取得
>するしかありません。

ああ、やはりそうなのですね。ただ、インストール情報は探せばどこかにレジスト
リを持っているわけなのでしょうね。探してみます。

>"マクロから WSH スクリプトを使い"ってのが、"マクロからWSHを実行する"なら
>引数で渡せばすむ話なんですけどね。

えっと、WSH スクリプトを作成するのは、マクロから行うので、その時点で、マク
ロパスを渡すことはできるのですが。WSH スクリプトを実行する段階では、逆にWSH
スクリプトからマクロを実行するということになり、その実行するマクロが存在し
ているマクロパス(マクロフォルダ)を WSH 単独で知りたいというようなことです。

といってもこれだけでは何のことだか判りませんね。

自分の環境で、自宅と職場で、秀丸メールのマクロ環境を同期させるために、
JustSystem の InternetDisk サービスを利用しています。ところが、この二つの環
境では、マクロフォルダのパス名が異なっているのです。なので、WSH スクリプト
に、マクロフォルダを決めうちで書かずに、都度取得すれば、どっちの環境で実行
しているかということを気にしないですむということです。

まあ回避する手はいろいろあると思うのですが、とりあえず、マクロフォルダをWSH
単独で(つまりはレジストリから)取得できれば一番簡単にこういった問題を回避す
ることができると考えたわけです。

----
ぱと

[ ]
RE:00680 レジストリからマクロパスを取得No.00681
h-tom さん 06/05/07 13:40
 

h-tom です。

>ああ、やはりそうなのですね。ただ、インストール情報は探せばどこかにレジスト
>リを持っているわけなのでしょうね。探してみます。
ああ、間違えました。アンインストール情報ですね。
場所はここ。
"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Hide
maru"

>えっと、WSH スクリプトを作成するのは、マクロから行うので、その時点で、マク
>ロパスを渡すことはできるのですが。WSH スクリプトを実行する段階では、逆にWSH
>スクリプトからマクロを実行するということになり、その実行するマクロが存在し
>ているマクロパス(マクロフォルダ)を WSH 単独で知りたいというようなことです。
"WSHから/x オプションでマクロを指定し実行する"ってことですよね?

マクロファイルは、フルパスで指定する必要がないので、気にしなくていいのでは?
フォルダ毎に分けていても、マクロフォルダからの相対パス(?)でいいはずですし。
(マクロの有無を確認するにはフルパスが必要ですが。)

あと、実行するWSHの場所が何処は何処なのでしょうか?
マクロと同じフォルダなら、自分自身の場所はWSHで取得できます。
いっそのこと、マクロフォルダを、OSの環境変数に設定しておくとか。

[ ]
RE:00681 レジストリからマクロパスを取得No.00682
ぱと さん 06/05/07 14:29
 
h-tom さん

秀丸メールユーザーのぱとと申します。

>ああ、間違えました。アンインストール情報ですね。
>場所はここ。
>"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Hide
>maru"

ありがとうございます。見てみます。

>"WSHから/x オプションでマクロを指定し実行する"ってことですよね?

えっと、自分でも混乱して、何が問題だったのか判らなくなったので、確認してみ
ました。

マクロから、フォルダショートカットを作成する際に、h-tom さんが作ってくれた、
OpenFolder.vbs の場所を指定するために(これはマクロフォルダにおいてありま
す。) 必要だったのでした。で、このフォルダショートカットを作成する処理は、
MakeFolderJumpVBS.vbs という VBS を実行して作成するので、マクロフォルダは、
MakeFolderJumpVBS.vbs 側で取得するようにしたかったのです。

>あと、実行するWSHの場所が何処は何処なのでしょうか?
>マクロと同じフォルダなら、自分自身の場所はWSHで取得できます。

これでいいのですね。マクロフォルダに WSH スクリプトは全て生成されて、ここで
実行するようになっていますので、自分(MakeFolderJumpVBS.vbs)の実行時に、自分
のいるパスに、OpenFolder.vbs も必ずあるという形で書けばいいのですね。

あるいは、もちろん、MakeFolderJumpVBS.vbs の実行時に、マクロの側からマクロ
フォルダを渡してあげてもいいですね。

今回は、マクロ初心者として、「秀丸環境のマクロフォルダって、レジストリから
はどう取得すればいいの?」というFAQ のような疑問を持ったということでご容赦
下さい。

いろいろ、アドバイスをありがとうございます。ちょっと試行錯誤してみます。

>いっそのこと、マクロフォルダを、OSの環境変数に設定しておくとか。

できれば、ini、レジストリ、環境変数などなどは利用しないで書きたいと思ってい
たのです。

----
ぱと

[ ]