プロジェクト上のマクロから.hmbookファイNo.10179
fzok4234 さん 23/07/09 18:01
 
いつもお世話になっております。Fzok4234 です。


さて、プロジェクトの .hmbook ファイル上でファイルパスの所に mac: で始まるマ
クロの文を
記述する際に、この .hmbook ファイル自身やその親ディレクトリのパスを取得する
必要が出て
きたのですが、どうすればよいのでしょうか ?

実際に
https://github.com/Fzok4234/HidemaruBugReport/blob/master/20230709-ProjectMacro/Test.hmbook
( U+0002 制御文字を含んでいるため必ず git clone か又はサイトの Download raw
file ボタンで
ダウンロード願います。 )
を作って currentmacrodirectory や currentmacrofilename 等のキーワードで取得
を試みましたが、
いずれも空文字列が返ってきてしまって上手くいきませんでした。

当方でやりたいことは、プロジェクトに「相対パス」で登録したファイルを
{ 文字コード, 改行コード, BOM の有無 } 及び 各種読み取り専用指定 ( /b || /r
|| /bb || /rr ) を
指定して開くことですが、そのためにはファイルパスの所に
mac:openfile @"/bb /rr /fu8-lf-nobom """ + $filePath + @"""" ;
というようにマクロの文を入れる必要があります。しかし、このときに $filePath
を .hmbook ファイル自身からの
相対パスから生成する場合に、どうしても「 .hmbook のあるディレクトリのパス」
を取得しないと
いけないのですが、現状ではこれを取得する関数やキーワードが無い状態のために上
手く $filePath を
導出できない状態です。



[ ]
RE:10179 プロジェクト上のマクロから.hmbNo.10180
h-tom さん 23/07/09 22:51
 
h-tom です。

>相対パスから生成する場合に、どうしても「 .hmbook のあるディレクトリのパス」
>を取得しないと
>いけないのですが、現状ではこれを取得する関数やキーワードが無い状態のために
>上手く $filePath を
>導出できない状態です。
現在読み込んでいるプロジェクトファイルのフルパスは取得できるので、そこから切
り出せばいいのでは。

[ ]
RE:10180 プロジェクト上のマクロから.hmbNo.10183
fzok4234 さん 23/07/13 15:44
 
> 現在読み込んでいるプロジェクトファイルのフルパスは取得できるので、そこから
>切り出せば
> いいのでは。

確かに、プロジェクトファイルのパスは HmExplorerPane.dll の GetProject 関数で
取得
できました。試験的にマクロ
https://github.com/Fzok4234/HidemaruMacro/blob/master/OpenProjectItem/src/OpenProjectItem.mac
を作って %APPDATA%\Hidemaruo\Hidemaru\Macro ディレクトリへインストールして、
テストプロジェクト
https://github.com/Fzok4234/HidemaruMacro/tree/master/OpenProjectItem/test
のような記述で動作するようにしてみました。

ただ、問題点が無いわけではなく
 1. プロジェクトの項目の右クリックメニューに「コンテキストメニュー(X)」の項
目を
    出せないので項目ファイル特有のコマンドを実行できない。
 2. 項目ファイルを openfile 文で開く実装のため自動実行マクロが実行できない。
というどうしても避けられない欠点があります。

やはり .hmbook の書式を拡張して
{ 文字コード, 改行コード, BOM の有無 } 及び 各種読み取り専用指定 ( /b || /r
|| /bb || /rr ) を
指定できるように改良してもらった方がよいと思います。



[ ]